<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Win32k: drvsup.c 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Win32k
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('a00665_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">drvsup.c</div>  </div>
</div><!--header-->
<div class="contents">
<a href="a00665.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160; </div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a03629.html">precomp.h</a>&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#pragma hdrstop</span></div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160; </div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &quot;ntddvdeo.h&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160; </div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160; </div>
<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01a">   30</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01a">_DISP_DRIVER_REGISTRY_TYPE</a> {</div>
<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa58218890fafaa0643a59e9294a9843d0">   31</a></span>&#160;    <a class="code" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa58218890fafaa0643a59e9294a9843d0">DispDriverRegGlobal</a>,</div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa5ce32297dc3f6df4e82c6e0790d30063">   32</a></span>&#160;    <a class="code" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa5ce32297dc3f6df4e82c6e0790d30063">DispDriverRegHardwareProfile</a>,</div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa01ae391162e54069de625bdc7049e934">   33</a></span>&#160;    <a class="code" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa01ae391162e54069de625bdc7049e934">DispDriverRegHardwareProfileCreate</a></div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;} <a class="code" href="a00665.html#a01e58bda8aaf9059fe3ffa0ddd55567b">DISP_DRIVER_REGISTRY_TYPE</a>;</div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160; </div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">// BUGBUG</span></div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">// For performance, we may want to use another lock to protect the contents</span></div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">// of gphysinfo, since those calls can take quite a long time - compared to</span></div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">// other window manager calls.</span></div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160; </div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160; </div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="a00665.html#a4f95d12ae9db57753d1ce7447479f0ee">   45</a></span>&#160;BOOL <a class="code" href="a00665.html#a4f95d12ae9db57753d1ce7447479f0ee">gbBaseVideo</a> = FALSE;</div>
<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="a00689.html#a762f2fbf9a0ad4d9a63f7c92adce1297">   46</a></span>&#160;BOOL <a class="code" href="a00665.html#a762f2fbf9a0ad4d9a63f7c92adce1297">bMultipleDisplaySystem</a> = FALSE;</div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160; </div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="a00665.html#accf086041259110de4bd6aac57f64279">   48</a></span>&#160;<span class="preprocessor">#define DEFAULT_POS_VALUE 0x80000000</span></div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160; </div>
<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="a00665.html#a659e9e6483dce7cb60583d9b35f14de4">   50</a></span>&#160;<span class="preprocessor">#define DM_INTERNAL_VALID_FLAGS                                               \</span></div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">    (DM_BITSPERPEL   | DM_PELSWIDTH | DM_PELSHEIGHT   | DM_DISPLAYFREQUENCY | \</span></div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">     DM_DISPLAYFLAGS | DM_LOGPIXELS | DM_PANNINGWIDTH | DM_PANNINGHEIGHT)</span></div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160; </div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">// BUGBUG</span></div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">// Goes in winuser.w</span></div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160; </div>
<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="a00665.html#a2ccdbdde9498b06c48c5eca065b9a1fd">   59</a></span>&#160;<span class="preprocessor">#define DISPLAY_DEVICE_VGA_COMPATIBLE 0x00000010</span></div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160; </div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160; </div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;BOOL</div>
<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="a00899.html#ad1a9b877f3705368d000061536e1b1fb">   73</a></span>&#160;<a class="code" href="a00665.html#ad1a9b877f3705368d000061536e1b1fb">ProbeAndCaptureDeviceName</a>(</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    PUNICODE_STRING Destination,</div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    PUNICODE_STRING Source)</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;{</div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    BOOL fFreeBuffer = FALSE;</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160; </div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    Destination-&gt;Buffer = NULL;</div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    Destination-&gt;Length = 0;</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160; </div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keywordflow">if</span> (Source) {</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160; </div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        <span class="keywordflow">try</span> {</div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;            *Destination = ProbeAndReadUnicodeString(Source);</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160; </div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;            <span class="keywordflow">if</span> (Destination-&gt;Length) {</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160; </div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="preprocessor">#if defined(_X86_)</span></div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;                ProbeForRead(Destination-&gt;Buffer, Destination-&gt;Length, <span class="keyword">sizeof</span>(BYTE));</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;                ProbeForRead(Destination-&gt;Buffer, Destination-&gt;Length, <span class="keyword">sizeof</span>(WCHAR));</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160; </div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;                Destination-&gt;Buffer =</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;                    UserAllocPoolWithQuota(Destination-&gt;Length, TAG_TEXT2);</div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160; </div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;                <span class="keywordflow">if</span> (Destination-&gt;Buffer) {</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;                    fFreeBuffer = TRUE;</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;                    RtlCopyMemory(Destination-&gt;Buffer,</div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;                                  Source-&gt;Buffer,</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;                                  Destination-&gt;Length);</div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;                } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;                    ExRaiseStatus(STATUS_NO_MEMORY);</div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;                }</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;            }</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;        } except (EXCEPTION_EXECUTE_HANDLER) {</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160; </div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;            <a class="code" href="a00371.html#a002956db9fb529e159fb441f09f39b42">RIPNTERR0</a>(GetExceptionCode(), <a class="code" href="a00371.html#ad6b24a3d61abdc148c8751b5c5add686">RIP_VERBOSE</a>, <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160; </div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;            <span class="keywordflow">if</span> (fFreeBuffer) {</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;                UserFreePool(Destination-&gt;Buffer);</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;            }</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;            <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        }</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    }</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160; </div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    <span class="keywordflow">if</span> (Destination-&gt;Length == 0) {</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160; </div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        <a class="code" href="a02801.html">PDESKTOP</a> pdesk = <a class="code" href="a00257.html#a8315d2c807ba18ba9e528c40614b6173">PtiCurrent</a>()-&gt;<a class="code" href="a02889.html#abb1184e0c5805b5ad89b79dcc2bd17c8">rpdesk</a>;</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        LPWSTR DeviceName;</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        USHORT Length;</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160; </div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;        <span class="keywordflow">if</span> (pdesk) {</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="comment">             * Special case for boot-up time.</span></div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;            DeviceName = pdesk-&gt;<a class="code" href="a02801.html#a7865078d53afb2719414b44d87f75c5d">pDispInfo</a>-&gt;<a class="code" href="a02605.html#a76af5d5bf5f5037a7ddcd8bb543fd388">pDevInfo</a>-&gt;<a class="code" href="a02601.html#a19e507bdf81c67304d8ba81c600ac0eb">szNtDeviceName</a>;</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;        } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;            DeviceName = <a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a76af5d5bf5f5037a7ddcd8bb543fd388">pDevInfo</a>-&gt;<a class="code" href="a02601.html#a19e507bdf81c67304d8ba81c600ac0eb">szNtDeviceName</a>;</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        }</div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160; </div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        Length = wcslen(DeviceName);</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160; </div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        Destination-&gt;Buffer =</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;            UserAllocPoolWithQuota(16 * <span class="keyword">sizeof</span>(WCHAR), TAG_TEXT2);</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160; </div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        <span class="keywordflow">if</span> (Destination-&gt;Buffer) {</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;            RtlCopyMemory(Destination-&gt;Buffer,</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;                          DeviceName,</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;                          16 * <span class="keyword">sizeof</span>(WCHAR));</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160; </div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;            RtlInitUnicodeString(Destination, Destination-&gt;Buffer);</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160; </div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;        } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;            <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        }</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    }</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160; </div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;}</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160; </div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160; </div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160; </div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160; </div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;VOID</div>
<div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="a00899.html#a744babe1f701ee80c5d81250e69c4db5">  173</a></span>&#160;<a class="code" href="a00665.html#a744babe1f701ee80c5d81250e69c4db5">UserSaveCurrentMode</a>(</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <a class="code" href="a02801.html">PDESKTOP</a>           pDesktop,</div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <a class="code" href="a02601.html">PPHYSICAL_DEV_INFO</a> physinfo,</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    LPDEVMODEW         lpdevmodeInformation</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    )</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;{</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    <a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a> newSize = lpdevmodeInformation-&gt;dmSize +</div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;                    lpdevmodeInformation-&gt;dmDriverExtra;</div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    PDEVMODEW pDevmode;</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160; </div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="keywordflow">if</span> (pDesktop) {</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160; </div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;        pDevmode = UserAllocPool(newSize, TAG_DEVMODE);</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160; </div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        <span class="keywordflow">if</span> (pDevmode) {</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160; </div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;            RtlCopyMemory(pDevmode,</div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;                          lpdevmodeInformation,</div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;                          newSize);</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160; </div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;            <span class="keywordflow">if</span> (pDesktop-&gt;<a class="code" href="a02801.html#a7670d05ec8727e45af6446b08a8e078c">pDesktopDevmode</a>) {</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;                UserFreePool(pDesktop-&gt;<a class="code" href="a02801.html#a7670d05ec8727e45af6446b08a8e078c">pDesktopDevmode</a>);</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;            } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;                <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;UserSaveCurrentMode - previous DEVMODE missing !\n&quot;</span>);</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;            }</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160; </div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;            pDesktop-&gt;<a class="code" href="a02801.html#a7670d05ec8727e45af6446b08a8e078c">pDesktopDevmode</a> = pDevmode;</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        }</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160; </div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    }</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160; </div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    <span class="keywordflow">if</span> (physinfo) {</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160; </div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;        pDevmode = UserAllocPool(newSize, TAG_DEVMODE);</div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160; </div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;        <span class="keywordflow">if</span> (pDevmode) {</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160; </div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;            RtlCopyMemory(pDevmode,</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;                          lpdevmodeInformation,</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;                          newSize);</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160; </div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;            <span class="keywordflow">if</span> (physinfo-&gt;<a class="code" href="a02601.html#a19bee6963f84c40169f417b39bc46059">pCurrentDevmode</a>) {</div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;                UserFreePool(physinfo-&gt;<a class="code" href="a02601.html#a19bee6963f84c40169f417b39bc46059">pCurrentDevmode</a>);</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;            }</div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160; </div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;            physinfo-&gt;<a class="code" href="a02601.html#a19bee6963f84c40169f417b39bc46059">pCurrentDevmode</a> = pDevmode;</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;        }</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    }</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160; </div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;}</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160; </div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160; </div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160; </div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160; </div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;HANDLE</div>
<div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="a00665.html#ae157271d2738ad5440f4428d44232e65">  249</a></span>&#160;<a class="code" href="a00665.html#ae157271d2738ad5440f4428d44232e65">UserGetRegistryHandleFromDeviceMap</a>(</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    PUNICODE_STRING deviceName,</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;    <a class="code" href="a00665.html#a01e58bda8aaf9059fe3ffa0ddd55567b">DISP_DRIVER_REGISTRY_TYPE</a> ParamType,</div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;    BOOL bMatchBaseVideo,</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    PNTSTATUS pStatus)</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;{</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    HANDLE hkRegistry = NULL;</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160; </div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    UNICODE_STRING    UnicodeString;</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;    OBJECT_ATTRIBUTES ObjectAttributes;</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    NTSTATUS          Status;</div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;    HANDLE            handle;</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    ULONG             cbStringSize;</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160; </div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetHandleFromMap: Enter\n&quot;</span>));</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160; </div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;<span class="comment">     * Initialize the handle</span></div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160; </div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;<span class="comment">     * Start by opening the registry devicemap for video.</span></div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160; </div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    RtlInitUnicodeString(&amp;UnicodeString,</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;                         L<span class="stringliteral">&quot;\\Registry\\Machine\\Hardware\\DeviceMap\\Video&quot;</span>);</div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160; </div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    InitializeObjectAttributes(&amp;ObjectAttributes,</div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;                               &amp;UnicodeString,</div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;                               OBJ_CASE_INSENSITIVE,</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;                               NULL,</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;                               NULL);</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160; </div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;    Status = ZwOpenKey(&amp;handle, KEY_READ, &amp;ObjectAttributes);</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160; </div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    <span class="keywordflow">if</span> (NT_SUCCESS(Status)) {</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160; </div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;        WCHAR driverRegistryPath[256];</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;        WCHAR fullRegistryPath[256];</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160; </div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;<span class="comment">         * Get the name of the driver based on the device name.</span></div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160; </div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;        Status = ZwQueryValueKey(handle,</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;                                 deviceName,</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;                                 KeyValueFullInformation,</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;                                 driverRegistryPath,</div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;                                 512,</div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;                                 &amp;cbStringSize);</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160; </div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;        <span class="keywordflow">if</span> (NT_SUCCESS(Status)) {</div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160; </div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;            <span class="comment">// Look up in the registry for the kernel driver node (it</span></div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;            <span class="comment">// is a full path to the driver node) so we can get the</span></div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;            <span class="comment">// display driver info.</span></div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160; </div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;            LPWSTR lpstrDriverRegistryPath;</div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;            LPWSTR lpstrEndPath;</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;            UNICODE_STRING FullRegistryPath;</div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160; </div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;            <span class="comment">// We can use wcsstr since we are guaranteed to find &quot;Services&quot;</span></div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;            <span class="comment">// in the string, and we won&#39;t run off the end of the string.</span></div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160; </div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;            lpstrDriverRegistryPath = wcsstr((LPWSTR)((PUCHAR)driverRegistryPath +</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;                                                 ((PKEY_VALUE_FULL_INFORMATION)driverRegistryPath)-&gt;DataOffset),</div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;                                              L<span class="stringliteral">&quot;\\Services&quot;</span>);</div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160; </div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;            <span class="comment">// Determine if the device for which we have the handle is a</span></div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;            <span class="comment">// BASEVIDEO device.</span></div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160; </div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;            <span class="keywordflow">if</span> (bMatchBaseVideo)</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;            {</div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;                TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetHandleFromMap: testing for basevideo device\n&quot;</span>));</div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160; </div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;                <span class="keywordflow">if</span> ((_wcsicmp(L<span class="stringliteral">&quot;\\Services\\VgaSave\\Device0&quot;</span>, lpstrDriverRegistryPath)) &amp;&amp;</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;                    (_wcsicmp(L<span class="stringliteral">&quot;\\Services\\Vga\\Device0&quot;</span>, lpstrDriverRegistryPath)) )</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;                {</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;                    TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetHandleFromMap: basevideo match failed - Exit\n\n&quot;</span>));</div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160; </div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;                    ZwClose(handle);</div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160; </div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;                    <span class="keywordflow">if</span> (pStatus) {</div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;                        *pStatus = STATUS_NO_SUCH_DEVICE;</div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;                    }</div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160; </div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;                    <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;                }</div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;            }</div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160; </div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;            <span class="comment">// Start composing the fully qualified path name.</span></div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160; </div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;            FullRegistryPath.Buffer = fullRegistryPath;</div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;            FullRegistryPath.Length = 0;</div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;            FullRegistryPath.MaximumLength = 255;</div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160; </div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;            RtlAppendUnicodeToString(&amp;FullRegistryPath,</div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;                                     L<span class="stringliteral">&quot;\\Registry\\Machine\\System\\CurrentControlSet&quot;</span>);</div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160; </div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;            <span class="comment">// If we want the hardware profile, insert the hardware profile</span></div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;            <span class="comment">// in there</span></div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160; </div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;            <span class="keywordflow">if</span> ((ParamType == <a class="code" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa5ce32297dc3f6df4e82c6e0790d30063">DispDriverRegHardwareProfile</a>) ||</div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;                (ParamType == <a class="code" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa01ae391162e54069de625bdc7049e934">DispDriverRegHardwareProfileCreate</a>))</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;            {</div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;                TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetHandleFromMap: using a hardware profile\n&quot;</span>));</div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;                RtlAppendUnicodeToString(&amp;FullRegistryPath,</div>
<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;                                         L<span class="stringliteral">&quot;\\Hardware Profiles\\Current\\System\\CurrentControlSet&quot;</span>);</div>
<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;            }</div>
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160; </div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;            <span class="comment">// If we have the create Options, we have to create the subkeys</span></div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;            <span class="comment">// otherwise, just open thekey</span></div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160; </div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;            InitializeObjectAttributes(&amp;ObjectAttributes,</div>
<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;                                       &amp;FullRegistryPath,</div>
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;                                       OBJ_CASE_INSENSITIVE,</div>
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;                                       NULL,</div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;                                       NULL);</div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160; </div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;            <span class="comment">// Check if the subkeys need to be created.</span></div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160; </div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;            <span class="keywordflow">if</span> (ParamType == <a class="code" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa01ae391162e54069de625bdc7049e934">DispDriverRegHardwareProfileCreate</a>)</div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;            {</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;                TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetHandleFromMap: creating a hardware profile\n&quot;</span>));</div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160; </div>
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;                <span class="comment">//</span></div>
<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;                <span class="comment">// We are guaranteed to go through the loop at least once,</span></div>
<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;                <span class="comment">// which will ensure the status is set properly.</span></div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;                <span class="comment">//</span></div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;                <span class="comment">// Basically, find the &#39;\&#39; replace it by NULL and add that</span></div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;                <span class="comment">// partial string to the full path (so we can create that</span></div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;                <span class="comment">// subkey), put back the &#39;\&#39; and keep on going for the next</span></div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;                <span class="comment">// string.  We must also add the end of the string.</span></div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;                <span class="comment">//</span></div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160; </div>
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;                <span class="keywordflow">do</span></div>
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;                {</div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;                    lpstrEndPath = wcschr(lpstrDriverRegistryPath + 1, L<span class="charliteral">&#39;\\&#39;</span>);</div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160; </div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;                    <span class="keywordflow">if</span> (lpstrEndPath != NULL) {</div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;                        *lpstrEndPath = UNICODE_NULL;</div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;                    }</div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160; </div>
<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;                    RtlAppendUnicodeToString(&amp;FullRegistryPath,</div>
<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;                                             lpstrDriverRegistryPath);</div>
<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160; </div>
<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;                    <span class="comment">//</span></div>
<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;                    <span class="comment">// Close the previous key if necessary.</span></div>
<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;                    <span class="comment">//</span></div>
<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160; </div>
<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;                    <span class="keywordflow">if</span> (hkRegistry)</div>
<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;                    {</div>
<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;                        ZwClose(hkRegistry);</div>
<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;                    }</div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160; </div>
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;                    <span class="comment">//</span></div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;                    <span class="comment">// Create the Key.</span></div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;                    <span class="comment">//</span></div>
<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160; </div>
<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;                    Status = ZwCreateKey(&amp;hkRegistry,</div>
<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;                                         (ACCESS_MASK) NULL,</div>
<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;                                         &amp;ObjectAttributes,</div>
<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;                                         0,</div>
<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;                                         NULL,</div>
<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;                                         0,</div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;                                         NULL);</div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160; </div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;                    <span class="keywordflow">if</span> (!NT_SUCCESS(Status))</div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;                    {</div>
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;                        hkRegistry = NULL;</div>
<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;                        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;                    }</div>
<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160; </div>
<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;                    <span class="comment">//</span></div>
<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;                    <span class="comment">// Check to see if we need to loop again.</span></div>
<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;                    <span class="comment">//</span></div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160; </div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;                    <span class="keywordflow">if</span> (lpstrEndPath == NULL)</div>
<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;                    {</div>
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;                        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;                    }</div>
<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;                    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;                    {</div>
<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;                        *lpstrEndPath = L<span class="charliteral">&#39;\\&#39;</span>;</div>
<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;                        lpstrDriverRegistryPath = lpstrEndPath;</div>
<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;                    }</div>
<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160; </div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160; </div>
<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;                } <span class="keywordflow">while</span>(1);</div>
<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160; </div>
<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;                <span class="keywordflow">if</span> (!NT_SUCCESS(Status))</div>
<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;                {</div>
<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;                    TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetHandleFromMap: failed to create key\n&quot;</span>));</div>
<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;                }</div>
<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;            }</div>
<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;            {</div>
<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;                RtlAppendUnicodeToString(&amp;FullRegistryPath,</div>
<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;                                         lpstrDriverRegistryPath);</div>
<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160; </div>
<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;                Status = ZwOpenKey(&amp;hkRegistry, KEY_READ, &amp;ObjectAttributes);</div>
<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160; </div>
<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;                <span class="keywordflow">if</span> (!NT_SUCCESS(Status)) {</div>
<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160; </div>
<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;                    TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetHandleFromMap: failed to open key\n&quot;</span>));</div>
<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160; </div>
<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;                    <span class="comment">//</span></div>
<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;                    <span class="comment">// We set this special status so the looping code in the</span></div>
<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;                    <span class="comment">// video port can handle unconfigured devices properly</span></div>
<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;                    <span class="comment">// (in the case where the second video card entry may not</span></div>
<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;                    <span class="comment">// be present).</span></div>
<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;                    <span class="comment">//</span></div>
<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160; </div>
<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;                    Status = STATUS_DEVICE_CONFIGURATION_ERROR;</div>
<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;                }</div>
<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;            }</div>
<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160; </div>
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetHandleFromMap: reg-key path =\n\t%ws\n&quot;</span>,</div>
<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;                        fullRegistryPath));</div>
<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;        }</div>
<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160; </div>
<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160; </div>
<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;        ZwClose(handle);</div>
<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;    }</div>
<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160; </div>
<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;    <span class="keywordflow">if</span> (!NT_SUCCESS(Status)) {</div>
<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160; </div>
<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetHandleFromMap: Error opening registry - status = %08lx\n&quot;</span>,</div>
<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;                    Status));</div>
<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160; </div>
<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;    }</div>
<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160; </div>
<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;    <span class="keywordflow">if</span> (pStatus) {</div>
<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;        *pStatus = Status;</div>
<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;    }</div>
<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160; </div>
<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetHandleFromMap: Exit\n\n&quot;</span>));</div>
<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160; </div>
<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;    <span class="keywordflow">return</span> hkRegistry;</div>
<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;}</div>
<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160; </div>
<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160; </div>
<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160; </div>
<div class="line"><a name="l00515"></a><span class="lineno"><a class="line" href="a00665.html#a368e1b12420426ae8aaea867a5a40c98">  515</a></span>&#160;NTSTATUS <a class="code" href="a00665.html#a368e1b12420426ae8aaea867a5a40c98">__EnumDisplayQueryRoutine</a>(</div>
<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;    IN PWSTR ValueName,</div>
<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;    IN ULONG ValueType,</div>
<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;    IN PVOID ValueData,</div>
<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;    IN ULONG ValueLength,</div>
<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;    IN PVOID Context,</div>
<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;    IN PVOID EntryContext)</div>
<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;{</div>
<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;<span class="comment">     * If the context value is NULL and the entry type is correct, then store</span></div>
<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;<span class="comment">     * the length of the value. Otherwise, copy the value to the specified</span></div>
<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;<span class="comment">     * memory.</span></div>
<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160; </div>
<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;    <span class="keywordflow">if</span> ((Context == NULL) &amp;&amp;</div>
<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;        ((ValueType == REG_SZ) || (ValueType == REG_MULTI_SZ)) ) {</div>
<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160; </div>
<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;        *(PULONG)EntryContext = ValueLength;</div>
<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160; </div>
<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;    } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160; </div>
<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;        RtlCopyMemory(Context, ValueData, ValueLength);</div>
<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;    }</div>
<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160; </div>
<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;    <span class="keywordflow">return</span> STATUS_SUCCESS;</div>
<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;}</div>
<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160; </div>
<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160; </div>
<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160; </div>
<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;LPWSTR</div>
<div class="line"><a name="l00554"></a><span class="lineno"><a class="line" href="a00665.html#a1178983eb56b481bd0bcb216f7d144cf">  554</a></span>&#160;<a class="code" href="a00665.html#a1178983eb56b481bd0bcb216f7d144cf">UserGetDisplayDriverNames</a>(</div>
<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;    PUNICODE_STRING deviceName</div>
<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;    )</div>
<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;{</div>
<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;    RTL_QUERY_REGISTRY_TABLE QueryTable[3];</div>
<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;    <a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>                    status;</div>
<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;    <a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>                    cb = 0;</div>
<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;    LPWSTR                   lpdisplay = NULL;</div>
<div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;    HANDLE                   hRegistry;</div>
<div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160; </div>
<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;    <span class="keywordflow">if</span> (hRegistry = <a class="code" href="a00665.html#ae157271d2738ad5440f4428d44232e65">UserGetRegistryHandleFromDeviceMap</a>(deviceName,</div>
<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;                                                       <a class="code" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa58218890fafaa0643a59e9294a9843d0">DispDriverRegGlobal</a>,</div>
<div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;                                                       FALSE,</div>
<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;                                                       NULL)) {</div>
<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160; </div>
<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;<span class="comment">         * Initialize the registry query table.</span></div>
<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;<span class="comment">         * Note : We specify NO_EXPAND so we can get a REG_MULTI_SZ back</span></div>
<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;<span class="comment">         * instead of multiple calls back with an REG_SZ</span></div>
<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;        QueryTable[0].QueryRoutine  = <a class="code" href="a00665.html#a368e1b12420426ae8aaea867a5a40c98">__EnumDisplayQueryRoutine</a>;</div>
<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;        QueryTable[0].Flags         = RTL_QUERY_REGISTRY_REQUIRED |</div>
<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;                                      RTL_QUERY_REGISTRY_NOEXPAND;</div>
<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;        QueryTable[0].Name          = (PWSTR)L<span class="stringliteral">&quot;InstalledDisplayDrivers&quot;</span>;</div>
<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;        QueryTable[0].EntryContext  = &amp;cb;</div>
<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;        QueryTable[0].DefaultType   = REG_NONE;</div>
<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;        QueryTable[0].DefaultData   = NULL;</div>
<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;        QueryTable[0].DefaultLength = 0;</div>
<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160; </div>
<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;        QueryTable[1].QueryRoutine  = NULL;</div>
<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;        QueryTable[1].Flags         = 0;</div>
<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;        QueryTable[1].Name          = NULL;</div>
<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160; </div>
<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;<span class="comment">         * Set the number of required bytes to zero and query the</span></div>
<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;<span class="comment">         * registry.</span></div>
<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;        cb = 0;</div>
<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;        status = RtlQueryRegistryValues(RTL_REGISTRY_HANDLE,</div>
<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;                                        (PWSTR)hRegistry,</div>
<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;                                        &amp;QueryTable[0],</div>
<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;                                        NULL,</div>
<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;                                        NULL);</div>
<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160; </div>
<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;<span class="comment">         * If the specified key was found and has a value, then</span></div>
<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;<span class="comment">         * allocate a buffer for the data and query the registry</span></div>
<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;<span class="comment">         * again to get the actual data.</span></div>
<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;        <span class="keywordflow">if</span> (cb != 0) {</div>
<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160; </div>
<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;            <span class="keywordflow">if</span> (lpdisplay = (LPWSTR)UserAllocPoolWithQuota(cb, TAG_SYSTEM)) {</div>
<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160; </div>
<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;                status = RtlQueryRegistryValues(RTL_REGISTRY_HANDLE,</div>
<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;                                                (PWSTR)hRegistry,</div>
<div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;                                                &amp;QueryTable[0],</div>
<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;                                                lpdisplay,</div>
<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;                                                NULL);</div>
<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160; </div>
<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;                <span class="keywordflow">if</span> (!NT_SUCCESS(status)) {</div>
<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160; </div>
<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;                    UserFreePool(lpdisplay);</div>
<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;                    lpdisplay = NULL;</div>
<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;                }</div>
<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;            }</div>
<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160; </div>
<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;        } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;            <a class="code" href="a00371.html#a31aafffb49dfe98bdc749c9b35c90162">RIPMSG1</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;No installed display driver: status = %08lx\n&quot;</span>, status);</div>
<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;        }</div>
<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160; </div>
<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;        ZwClose(hRegistry);</div>
<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;    }</div>
<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160; </div>
<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;    <span class="keywordflow">return</span> lpdisplay;</div>
<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;}</div>
<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160; </div>
<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160; </div>
<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160; </div>
<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;VOID</div>
<div class="line"><a name="l00643"></a><span class="lineno"><a class="line" href="a00665.html#aa8b64103d379d1cc9e91a96db783aa63">  643</a></span>&#160;<a class="code" href="a00665.html#aa8b64103d379d1cc9e91a96db783aa63">UserLogDisplayDriverEvent</a>(</div>
<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;    DISP_DRIVER_LOG MsgType</div>
<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;    )</div>
<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;{</div>
<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;    HANDLE            hkRegistry;</div>
<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;    OBJECT_ATTRIBUTES ObjectAttributes;</div>
<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;    UNICODE_STRING    UnicodeString;</div>
<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160; </div>
<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;    NTSTATUS          Status;</div>
<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;    <a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>             dwValue = 1;</div>
<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160; </div>
<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;    RtlInitUnicodeString(&amp;UnicodeString,</div>
<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;                         L<span class="stringliteral">&quot;\\Registry\\Machine\\System\\CurrentControlSet\\&quot;</span></div>
<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;                         L<span class="stringliteral">&quot;Control\\GraphicsDrivers\\InvalidDisplay&quot;</span>);</div>
<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160; </div>
<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;    InitializeObjectAttributes(&amp;ObjectAttributes,</div>
<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;                               &amp;UnicodeString,</div>
<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;                               OBJ_CASE_INSENSITIVE,</div>
<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;                               NULL,</div>
<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;                               NULL);</div>
<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160; </div>
<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;    Status = ZwCreateKey(&amp;hkRegistry,</div>
<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;                         GENERIC_READ | GENERIC_WRITE,</div>
<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;                         &amp;ObjectAttributes,</div>
<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;                         0L,</div>
<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;                         NULL,</div>
<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;                         REG_OPTION_VOLATILE,</div>
<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;                         NULL);</div>
<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160; </div>
<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;    <span class="keywordflow">if</span> (NT_SUCCESS(Status)) {</div>
<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160; </div>
<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;        <span class="keywordflow">switch</span> (MsgType) {</div>
<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160; </div>
<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;        <span class="keywordflow">case</span> MsgInvalidUsingDefaultMode:</div>
<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160; </div>
<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;            RtlInitUnicodeString(&amp;UnicodeString, L<span class="stringliteral">&quot;DefaultMode&quot;</span>);</div>
<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160; </div>
<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;        <span class="keywordflow">case</span> MsgInvalidDisplayDriver:</div>
<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160; </div>
<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;            RtlInitUnicodeString(&amp;UnicodeString, L<span class="stringliteral">&quot;MissingDisplayDriver&quot;</span>);</div>
<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160; </div>
<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;        <span class="keywordflow">case</span> MsgInvalidOldDriver:</div>
<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160; </div>
<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;            RtlInitUnicodeString(&amp;UnicodeString, L<span class="stringliteral">&quot;OldDisplayDriver&quot;</span>);</div>
<div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160; </div>
<div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;        <span class="keywordflow">case</span> MsgInvalidDisplay16Colors:</div>
<div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160; </div>
<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;            RtlInitUnicodeString(&amp;UnicodeString, L<span class="stringliteral">&quot;16ColorMode&quot;</span>);</div>
<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160; </div>
<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;        <span class="keywordflow">case</span> MsgInvalidDisplayMode:</div>
<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160; </div>
<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;            RtlInitUnicodeString(&amp;UnicodeString, L<span class="stringliteral">&quot;BadMode&quot;</span>);</div>
<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160; </div>
<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;        <span class="keywordflow">case</span> MsgInvalidConfiguration:</div>
<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160; </div>
<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;            RtlInitUnicodeString(&amp;UnicodeString, L<span class="stringliteral">&quot;InvalidConfiguration&quot;</span>);</div>
<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160; </div>
<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;        <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160; </div>
<div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;            <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;UserLogDisplayDriverEvent: Invalid error message\n&quot;</span>);</div>
<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;            <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160; </div>
<div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;        }</div>
<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160; </div>
<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;<span class="comment">         * Write the optional data value under the key.</span></div>
<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160; </div>
<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;        (VOID) ZwSetValueKey(hkRegistry,</div>
<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;                             &amp;UnicodeString,</div>
<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;                             0,</div>
<div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;                             REG_DWORD,</div>
<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;                             &amp;dwValue,</div>
<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;                             <span class="keyword">sizeof</span>(<a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>));</div>
<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160; </div>
<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;        (VOID)ZwClose(hkRegistry);</div>
<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;    }</div>
<div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;}</div>
<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160; </div>
<div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160; </div>
<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;<span class="keyword">static</span></div>
<div class="line"><a name="l00730"></a><span class="lineno"><a class="line" href="a00665.html#a2629889fd8bf33088b544b6c3128707a">  730</a></span>&#160;LPWSTR <a class="code" href="a00665.html#a2629889fd8bf33088b544b6c3128707a">DefaultSettings</a>[8] = {</div>
<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;    L<span class="stringliteral">&quot;DefaultSettings.BitsPerPel&quot;</span>,</div>
<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;    L<span class="stringliteral">&quot;DefaultSettings.XResolution&quot;</span>,</div>
<div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;    L<span class="stringliteral">&quot;DefaultSettings.YResolution&quot;</span>,</div>
<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;    L<span class="stringliteral">&quot;DefaultSettings.VRefresh&quot;</span>,</div>
<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;    L<span class="stringliteral">&quot;DefaultSettings.Flags&quot;</span>,</div>
<div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;    L<span class="stringliteral">&quot;DefaultSettings.XPanning&quot;</span>,</div>
<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;    L<span class="stringliteral">&quot;DefaultSettings.YPanning&quot;</span>,</div>
<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;    L<span class="stringliteral">&quot;DefaultSettings.DriverExtra&quot;</span>,</div>
<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;};</div>
<div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160; </div>
<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;<span class="keyword">static</span></div>
<div class="line"><a name="l00742"></a><span class="lineno"><a class="line" href="a00665.html#a998b6ce5633527f762d09b0f887e633f">  742</a></span>&#160;LPWSTR <a class="code" href="a00665.html#a998b6ce5633527f762d09b0f887e633f">AttachedSettings</a>[] = {</div>
<div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;    L<span class="stringliteral">&quot;Attach.PrimaryDevice&quot;</span>,</div>
<div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;    L<span class="stringliteral">&quot;Attach.ToDesktop&quot;</span>,</div>
<div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;    L<span class="stringliteral">&quot;Attach.RelativeX&quot;</span>,</div>
<div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;    L<span class="stringliteral">&quot;Attach.RelativeY&quot;</span>,</div>
<div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;};</div>
<div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160; </div>
<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;<span class="keyword">static</span></div>
<div class="line"><a name="l00750"></a><span class="lineno"><a class="line" href="a00665.html#a5de8fc19f0066ed30a41b9c0ef4d4deb">  750</a></span>&#160;LPWSTR <a class="code" href="a00665.html#a5de8fc19f0066ed30a41b9c0ef4d4deb">SoftwareSettings</a>[] = {</div>
<div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;    L<span class="stringliteral">&quot;MultiDisplayDriver&quot;</span>,</div>
<div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;    L<span class="stringliteral">&quot;MirroringDriver&quot;</span>,</div>
<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;    L<span class="stringliteral">&quot;VgaCompatible&quot;</span>,</div>
<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;};</div>
<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160; </div>
<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;NTSTATUS</div>
<div class="line"><a name="l00757"></a><span class="lineno"><a class="line" href="a00665.html#a9060b90d884ff96a08e71aec773de234">  757</a></span>&#160;<a class="code" href="a00665.html#a9060b90d884ff96a08e71aec773de234">UserDriverExtraCallback</a>(</div>
<div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;    PWSTR ValueName,</div>
<div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;    ULONG ValueType,</div>
<div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;    PVOID ValueData,</div>
<div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;    ULONG ValueLength,</div>
<div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;    PVOID Context,</div>
<div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;    PVOID EntryContext)</div>
<div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160; </div>
<div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;{</div>
<div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160; </div>
<div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;    PDEVMODEW pdevmode = (PDEVMODEW) EntryContext;</div>
<div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160; </div>
<div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;<span class="comment">     * Put the driver extra data in the right place, if necessary.</span></div>
<div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160; </div>
<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;    pdevmode-&gt;dmDriverExtra = min(pdevmode-&gt;dmDriverExtra, (USHORT)ValueLength);</div>
<div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160; </div>
<div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;    RtlMoveMemory(pdevmode+1,</div>
<div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;                  ValueData,</div>
<div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;                  pdevmode-&gt;dmDriverExtra);</div>
<div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160; </div>
<div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;    <span class="keywordflow">return</span> STATUS_SUCCESS;</div>
<div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;}</div>
<div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160; </div>
<div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160; </div>
<div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;NTSTATUS</div>
<div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="a00665.html#a1496fe4e3afa850f6bd625b0c3542b78">  799</a></span>&#160;<a class="code" href="a00665.html#a1496fe4e3afa850f6bd625b0c3542b78">UserGetDisplayDriverParameters</a>(</div>
<div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;    PUNICODE_STRING        deviceName,</div>
<div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;    PDEVMODEW              pdevmode,</div>
<div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;    BOOL                   bEmptyDevmode)</div>
<div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;{</div>
<div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;    ULONG    i;</div>
<div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;    ULONG    k;</div>
<div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;    NTSTATUS retStatus;</div>
<div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;    HANDLE   hkRegistry;</div>
<div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160; </div>
<div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;    <a class="code" href="a00665.html#a01e58bda8aaf9059fe3ffa0ddd55567b">DISP_DRIVER_REGISTRY_TYPE</a> registryParam;</div>
<div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;    <a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a> nullValue = 0;</div>
<div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160; </div>
<div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;<span class="comment">     * Our current algorithm is to save or get things from the hardware profile</span></div>
<div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;<span class="comment">     * first, and then try the global profile as a backup.</span></div>
<div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;<span class="comment">     *</span></div>
<div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;<span class="comment">     * NOTE ??? For saving, should we always back propagate the changes to the</span></div>
<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;<span class="comment">     * global settings also ?  We do this at this point.</span></div>
<div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160; </div>
<div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;    RTL_QUERY_REGISTRY_TABLE QueryTable[9] = {</div>
<div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160; </div>
<div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;        {NULL, RTL_QUERY_REGISTRY_DIRECT, NULL, &amp;pdevmode-&gt;dmBitsPerPel,</div>
<div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;         REG_NONE, NULL, 0},</div>
<div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160; </div>
<div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;        {NULL, RTL_QUERY_REGISTRY_DIRECT, NULL, &amp;pdevmode-&gt;dmPelsWidth,</div>
<div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;         REG_NONE, NULL, 0},</div>
<div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160; </div>
<div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;        {NULL, RTL_QUERY_REGISTRY_DIRECT, NULL, &amp;pdevmode-&gt;dmPelsHeight,</div>
<div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;         REG_NONE, NULL, 0},</div>
<div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160; </div>
<div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;        {NULL, RTL_QUERY_REGISTRY_DIRECT, NULL, &amp;pdevmode-&gt;dmDisplayFrequency,</div>
<div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;         REG_NONE, NULL, 0},</div>
<div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160; </div>
<div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;        {NULL, RTL_QUERY_REGISTRY_DIRECT, NULL, &amp;pdevmode-&gt;dmDisplayFlags,</div>
<div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;         REG_NONE, NULL, 0},</div>
<div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160; </div>
<div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;        {NULL, RTL_QUERY_REGISTRY_DIRECT, NULL, &amp;pdevmode-&gt;dmPanningWidth,</div>
<div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;         REG_NONE, NULL, 0},</div>
<div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160; </div>
<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;        {NULL, RTL_QUERY_REGISTRY_DIRECT, NULL, &amp;pdevmode-&gt;dmPanningHeight,</div>
<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;         REG_NONE, NULL, 0},</div>
<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160; </div>
<div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;        <span class="comment">// if the value is not there, we want the call to succeed anyway.</span></div>
<div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;        <span class="comment">// so specify a vlue that is NULL modulo 64K !</span></div>
<div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160; </div>
<div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;        {<a class="code" href="a00665.html#a9060b90d884ff96a08e71aec773de234">UserDriverExtraCallback</a>,      0, NULL, pdevmode,</div>
<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;         REG_DWORD, &amp;nullValue, 0x10000},</div>
<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160; </div>
<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;        {NULL, 0, NULL}</div>
<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;    };</div>
<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160; </div>
<div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDriverParams\n&quot;</span>));</div>
<div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160; </div>
<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;<span class="comment">     * Special debug code to ensure that anyone who calls this API</span></div>
<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;<span class="comment">     * knows what they are doing, and we don&#39;t end up in here with a</span></div>
<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;<span class="comment">     * &quot;random&quot; devmode that does not ensure sizes.</span></div>
<div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160; </div>
<div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;    <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(pdevmode-&gt;dmSize == 0xDDDD);</div>
<div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160; </div>
<div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;<span class="comment">     * If there is no place for the Driver Extra data, don&#39;t ask for it.</span></div>
<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;<span class="comment">     * This will just cause the code not to read that value</span></div>
<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160; </div>
<div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;    <span class="keywordflow">if</span> (pdevmode-&gt;dmDriverExtra == 0) {</div>
<div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160; </div>
<div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;        QueryTable[7].Flags = 0;</div>
<div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;        pdevmode-&gt;dmDriverExtra = 0;</div>
<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;    }</div>
<div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160; </div>
<div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;<span class="comment">     * We assume that the DEVMODE was previously zeroed out by the caller</span></div>
<div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160; </div>
<div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;    retStatus = STATUS_SUCCESS;</div>
<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160; </div>
<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;    <span class="keywordflow">if</span> (bEmptyDevmode) {</div>
<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160; </div>
<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;<span class="comment">         * We want an empty DEVMODE (except for the LogPixels).</span></div>
<div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160; </div>
<div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDriverParams: Default (empty) DEVMODE\n&quot;</span>));</div>
<div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160; </div>
<div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;        RtlZeroMemory(pdevmode, <span class="keyword">sizeof</span>(DEVMODEW));</div>
<div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160; </div>
<div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;    } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160; </div>
<div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;<span class="preprocessor">#if 0</span></div>
<div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;<span class="comment">         * Let&#39;s try to get the per-user settings first.</span></div>
<div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160; </div>
<div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDriverParams: USER Settings\n&quot;</span>));</div>
<div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160; </div>
<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;        <span class="keywordflow">for</span> (i=0; i &lt; 8; i++)</div>
<div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;        {</div>
<div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;            QueryTable[i].Name = <a class="code" href="a00665.html#a2629889fd8bf33088b544b6c3128707a">DefaultSettings</a>[i];</div>
<div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;        }</div>
<div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160; </div>
<div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;        retStatus = RtlQueryRegistryValues(RTL_REGISTRY_USER,</div>
<div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;                                           NULL,</div>
<div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;                                           &amp;QueryTable[0],</div>
<div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;                                           NULL,</div>
<div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;                                           NULL);</div>
<div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;        <span class="keywordflow">if</span> (NT_SUCCESS(retStatus))</div>
<div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160; </div>
<div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160; </div>
<div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDriverParams: Hardware Profile Settings\n&quot;</span>));</div>
<div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160; </div>
<div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;<span class="comment">             * try the hardware profile first and see if we can get parameters</span></div>
<div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;<span class="comment">             * from that.  If that fails, fall back to getting the system</span></div>
<div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;<span class="comment">             * parameters.</span></div>
<div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160; </div>
<div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;            registryParam = <a class="code" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa5ce32297dc3f6df4e82c6e0790d30063">DispDriverRegHardwareProfile</a>;</div>
<div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160; </div>
<div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;            <span class="keywordflow">for</span> (k=1; k&lt;=2; k++)</div>
<div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;            {</div>
<div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;                hkRegistry = <a class="code" href="a00665.html#ae157271d2738ad5440f4428d44232e65">UserGetRegistryHandleFromDeviceMap</a>(deviceName,</div>
<div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;                                                                registryParam,</div>
<div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;                                                                FALSE,</div>
<div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;                                                                NULL);</div>
<div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160; </div>
<div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;                <span class="keywordflow">if</span> (hkRegistry == NULL)</div>
<div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;                {</div>
<div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;                    TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDriverParams: failed - registry could not be opened\n&quot;</span>));</div>
<div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;                    retStatus = STATUS_UNSUCCESSFUL;</div>
<div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;                }</div>
<div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;                {</div>
<div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;                    <span class="keywordflow">for</span> (i=0; i &lt; 8; i++)</div>
<div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;                    {</div>
<div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;                        QueryTable[i].Name = <a class="code" href="a00665.html#a2629889fd8bf33088b544b6c3128707a">DefaultSettings</a>[i];</div>
<div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;                    }</div>
<div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160; </div>
<div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;                    retStatus = RtlQueryRegistryValues(RTL_REGISTRY_HANDLE,</div>
<div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;                                                       (PWSTR)hkRegistry,</div>
<div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;                                                       &amp;QueryTable[0],</div>
<div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;                                                       NULL,</div>
<div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;                                                       NULL);</div>
<div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160; </div>
<div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;                    ZwClose(hkRegistry);</div>
<div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;                }</div>
<div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160; </div>
<div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;<span class="comment">                 * If something failed for the hardware profile, try</span></div>
<div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;<span class="comment">                 * to get the global settings</span></div>
<div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;<span class="comment">                 * If everything is OK, just exit the loop</span></div>
<div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160; </div>
<div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;                <span class="keywordflow">if</span> (NT_SUCCESS(retStatus))</div>
<div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;                {</div>
<div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;                    <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;                }</div>
<div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;                {</div>
<div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;                    TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDriverParams: get hardware profile failed - try global settings\n&quot;</span>));</div>
<div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;                    registryParam = <a class="code" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa58218890fafaa0643a59e9294a9843d0">DispDriverRegGlobal</a>;</div>
<div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;                }</div>
<div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160; </div>
<div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;            }</div>
<div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160; </div>
<div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;<span class="comment">         * Other common fields to the DEVMODEs</span></div>
<div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160; </div>
<div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;        <span class="keywordflow">if</span> (NT_SUCCESS(retStatus))</div>
<div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;        {</div>
<div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;<span class="comment">             * Lets check if the DEVMODE we got is all NULLs (like when</span></div>
<div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;<span class="comment">             * the driver just got installed).</span></div>
<div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;<span class="comment">             * If it is, the driver should be reconfigured</span></div>
<div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;<span class="comment">             *</span></div>
<div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;<span class="comment">             * We will only do this if we are NOT in BASVIDEO, since the VGA</span></div>
<div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;<span class="comment">             * BASEVIDEO driver need not be configured.</span></div>
<div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160; </div>
<div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;            <span class="keywordflow">if</span> ((pdevmode-&gt;dmBitsPerPel        == 0) &amp;&amp;</div>
<div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;                (pdevmode-&gt;dmPelsWidth         == 0) &amp;&amp;</div>
<div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;                (pdevmode-&gt;dmPelsHeight        == 0) &amp;&amp;</div>
<div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;                (pdevmode-&gt;dmDisplayFrequency  == 0) &amp;&amp;</div>
<div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;                (pdevmode-&gt;dmDisplayFlags      == 0) &amp;&amp;</div>
<div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;                (<a class="code" href="a00665.html#a4f95d12ae9db57753d1ce7447479f0ee">gbBaseVideo</a>                   == FALSE))</div>
<div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;            {</div>
<div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;                <a class="code" href="a00665.html#aa8b64103d379d1cc9e91a96db783aa63">UserLogDisplayDriverEvent</a>(MsgInvalidUsingDefaultMode);</div>
<div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;            }</div>
<div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;        }</div>
<div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;    }</div>
<div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160; </div>
<div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;<span class="comment">     * Let&#39;s fill out all the other fields of the DEVMODE that ALWAYS</span></div>
<div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;<span class="comment">     * need to be initialized.</span></div>
<div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160; </div>
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;    <span class="keywordflow">if</span> (NT_SUCCESS(retStatus)) {</div>
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; </div>
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;<span class="comment">         * Set versions and size.</span></div>
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; </div>
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;        pdevmode-&gt;dmSpecVersion   = DM_SPECVERSION;</div>
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;        pdevmode-&gt;dmDriverVersion = DM_SPECVERSION;</div>
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;        pdevmode-&gt;dmSize          = <span class="keyword">sizeof</span>(DEVMODEW);</div>
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; </div>
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;<span class="comment">         * Currently, the logpixel value should not be changed on the fly.</span></div>
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;<span class="comment">         * So once it has been read out of the registry at boot time, keep</span></div>
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;<span class="comment">         * that same value and ignore the registry.</span></div>
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; </div>
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#ad3e0b5376b5114f4269df20805a3a85e">cxPixelsPerInch</a>)</div>
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;        {</div>
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;            pdevmode-&gt;dmLogPixels = <a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#ad3e0b5376b5114f4269df20805a3a85e">cxPixelsPerInch</a>;</div>
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;        }</div>
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;        <span class="keywordflow">else</span></div>
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;        {</div>
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;<span class="comment">             * Get the devices pelDPI out of the registry</span></div>
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; </div>
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;            UNICODE_STRING    us;</div>
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;            OBJECT_ATTRIBUTES ObjectAttributes;</div>
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;            NTSTATUS          Status;</div>
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;            HANDLE            hKey;</div>
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;            <a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>             cbSize;</div>
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;            BYTE              Buf[<span class="keyword">sizeof</span>(KEY_VALUE_PARTIAL_INFORMATION) + <span class="keyword">sizeof</span>(<a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>)];</div>
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; </div>
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;            pdevmode-&gt;dmLogPixels = 96;</div>
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; </div>
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;            <span class="comment">// Look in the Hardware Profile for the current font size.</span></div>
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;            <span class="comment">// If that fails, look in the global software location.</span></div>
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; </div>
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;            RtlInitUnicodeString(&amp;us, L<span class="stringliteral">&quot;\\Registry\\Machine\\System&quot;</span></div>
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;                                      L<span class="stringliteral">&quot;\\CurrentControlSet\\Hardware Profiles&quot;</span></div>
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;                                      L<span class="stringliteral">&quot;\\Current\\Software\\Fonts&quot;</span>);</div>
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; </div>
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;            InitializeObjectAttributes(&amp;ObjectAttributes,</div>
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;                                       &amp;us,</div>
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;                                       OBJ_CASE_INSENSITIVE,</div>
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;                                       NULL,</div>
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;                                       NULL);</div>
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; </div>
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;            Status = ZwOpenKey(&amp;hKey, KEY_READ, &amp;ObjectAttributes);</div>
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; </div>
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;            <span class="keywordflow">if</span> (!NT_SUCCESS(Status)) {</div>
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; </div>
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;                RtlInitUnicodeString(&amp;us, L<span class="stringliteral">&quot;\\Registry\\Machine\\Software&quot;</span></div>
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;                                          L<span class="stringliteral">&quot;\\Microsoft\\Windows NT&quot;</span></div>
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;                                          L<span class="stringliteral">&quot;\\CurrentVersion\\FontDPI&quot;</span>);</div>
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; </div>
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;                InitializeObjectAttributes(&amp;ObjectAttributes,</div>
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;                                           &amp;us,</div>
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;                                           OBJ_CASE_INSENSITIVE,</div>
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;                                           NULL,</div>
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;                                           NULL);</div>
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; </div>
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;                Status = ZwOpenKey(&amp;hKey, KEY_READ, &amp;ObjectAttributes);</div>
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;            }</div>
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; </div>
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;            <span class="keywordflow">if</span> (NT_SUCCESS(Status)) {</div>
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; </div>
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;                RtlInitUnicodeString(&amp;us, L<span class="stringliteral">&quot;LogPixels&quot;</span>);</div>
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; </div>
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;                Status = ZwQueryValueKey(hKey,</div>
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;                                         &amp;us,</div>
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;                                         KeyValuePartialInformation,</div>
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;                                         (PKEY_VALUE_PARTIAL_INFORMATION)Buf,</div>
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;                                         <span class="keyword">sizeof</span>(Buf),</div>
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;                                         &amp;cbSize);</div>
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; </div>
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;                <span class="keywordflow">if</span> (NT_SUCCESS(Status)) {</div>
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; </div>
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;                    pdevmode-&gt;dmLogPixels =</div>
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;                        *((PUSHORT)((PKEY_VALUE_PARTIAL_INFORMATION)Buf)-&gt;Data);</div>
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;                }</div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; </div>
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;                ZwClose(hKey);</div>
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;            }</div>
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; </div>
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;<span class="comment">             * For non high-res mode, let&#39;s force small font size so</span></div>
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;<span class="comment">             * that various dialogs are not clipped out.</span></div>
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; </div>
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;            <span class="comment">// if (pdevmode-&gt;dmPelsHeight &lt; 600) {</span></div>
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;            <span class="comment">//     pdevmode-&gt;dmLogPixels = 96;</span></div>
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;            <span class="comment">// }</span></div>
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; </div>
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;        }</div>
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; </div>
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;        pdevmode-&gt;dmFields = <a class="code" href="a00665.html#a659e9e6483dce7cb60583d9b35f14de4">DM_INTERNAL_VALID_FLAGS</a>;</div>
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; </div>
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDriverParams: DEVMODE\n&quot;</span>));</div>
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;          Size        = %d\n&quot;</span>,    pdevmode-&gt;dmSize));</div>
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;          Fields      = %08lx\n&quot;</span>, pdevmode-&gt;dmFields));</div>
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;          XResolution = %d\n&quot;</span>,    pdevmode-&gt;dmPelsWidth));</div>
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;          YResolution = %d\n&quot;</span>,    pdevmode-&gt;dmPelsHeight));</div>
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;          Bpp         = %d\n&quot;</span>,    pdevmode-&gt;dmBitsPerPel));</div>
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;          Frequency   = %d\n&quot;</span>,    pdevmode-&gt;dmDisplayFrequency));</div>
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;          Flags       = %d\n&quot;</span>,    pdevmode-&gt;dmDisplayFlags));</div>
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;          XPanning    = %d\n&quot;</span>,    pdevmode-&gt;dmPanningWidth));</div>
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;          YPanning    = %d\n&quot;</span>,    pdevmode-&gt;dmPanningHeight));</div>
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;          DPI         = %d\n&quot;</span>,    pdevmode-&gt;dmLogPixels));</div>
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;          DriverExtra = %d&quot;</span>,      pdevmode-&gt;dmDriverExtra));</div>
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;        <span class="keywordflow">if</span> (pdevmode-&gt;dmDriverExtra) {</div>
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot; - %08lx %08lx\n&quot;</span>,</div>
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;                        *(PULONG)(((PUCHAR)pdevmode)+pdevmode-&gt;dmSize),</div>
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;                        *(PULONG)(((PUCHAR)pdevmode)+pdevmode-&gt;dmSize + 4)));</div>
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;        } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;\n&quot;</span>));</div>
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;        }</div>
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; </div>
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;    } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; </div>
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetSetParms: Get failed\n\n&quot;</span>));</div>
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; </div>
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;    }</div>
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; </div>
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDriverParams: Exit\n\n&quot;</span>));</div>
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; </div>
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;    <span class="keywordflow">return</span> (retStatus);</div>
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;}</div>
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; </div>
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; </div>
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; </div>
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;NTSTATUS</div>
<div class="line"><a name="l01146"></a><span class="lineno"><a class="line" href="a00665.html#a99ff717624d5af5628c02ebf95a506ce"> 1146</a></span>&#160;<a class="code" href="a00665.html#a99ff717624d5af5628c02ebf95a506ce">UserWriteDisplayDriverParameters</a>(</div>
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;    ULONG     RelativeTo,</div>
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;    PWSTR     Path,</div>
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;    PDEVMODEW pdevmode,</div>
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;    PRECT     pRect)</div>
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;{</div>
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;    ULONG i;</div>
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;    NTSTATUS retStatus ;</div>
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;    <a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>    data[7];</div>
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; </div>
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;    data[0] = pdevmode-&gt;dmBitsPerPel;</div>
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;    data[1] = pdevmode-&gt;dmPelsWidth;</div>
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;    data[2] = pdevmode-&gt;dmPelsHeight;</div>
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;    data[3] = pdevmode-&gt;dmDisplayFrequency;</div>
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;    data[4] = pdevmode-&gt;dmDisplayFlags;</div>
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;    data[5] = pdevmode-&gt;dmPanningWidth;</div>
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;    data[6] = pdevmode-&gt;dmPanningHeight;</div>
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; </div>
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;    <span class="keywordflow">for</span> (i=0; i &lt; 7; i++) {</div>
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; </div>
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;        retStatus = RtlWriteRegistryValue(RelativeTo,</div>
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;                                          Path,</div>
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;                                          <a class="code" href="a00665.html#a2629889fd8bf33088b544b6c3128707a">DefaultSettings</a>[i],</div>
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;                                          REG_DWORD,</div>
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;                                          &amp;data[i],</div>
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;                                          <span class="keyword">sizeof</span>(<a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>));</div>
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;        <span class="keywordflow">if</span> (!NT_SUCCESS(retStatus)) {</div>
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; </div>
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;            <span class="comment">// If something failed, stop</span></div>
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; </div>
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;            <span class="keywordflow">return</span> retStatus;</div>
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;        }</div>
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;    }</div>
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; </div>
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;    <span class="keywordflow">if</span> (pdevmode-&gt;dmDriverExtra) {</div>
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; </div>
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;        retStatus = RtlWriteRegistryValue(RelativeTo,</div>
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;                                          Path,</div>
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;                                          <a class="code" href="a00665.html#a2629889fd8bf33088b544b6c3128707a">DefaultSettings</a>[7],</div>
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;                                          REG_BINARY,</div>
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;                                          ((PUCHAR)pdevmode) + pdevmode-&gt;dmSize,</div>
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;                                          pdevmode-&gt;dmDriverExtra);</div>
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;    }</div>
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; </div>
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;    <span class="keywordflow">if</span> (NT_SUCCESS(retStatus) &amp;&amp; pRect) {</div>
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; </div>
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;        ULONG attach = 1;</div>
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; </div>
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;        <span class="keywordflow">if</span> (pRect == (PRECT)-1) {</div>
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;            attach = 0;</div>
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;        }</div>
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; </div>
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;        data[1] = attach;</div>
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;        data[2] = attach ? (pRect-&gt;left + pRect-&gt;right) / 2 : 0;</div>
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;        data[3] = attach ? (pRect-&gt;top + pRect-&gt;bottom) / 2 : 0;</div>
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; </div>
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;        <span class="keywordflow">for</span> (i=1; i &lt; 4; i++) {</div>
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; </div>
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;            retStatus = RtlWriteRegistryValue(RelativeTo,</div>
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;                                              Path,</div>
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;                                              <a class="code" href="a00665.html#a998b6ce5633527f762d09b0f887e633f">AttachedSettings</a>[i],</div>
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;                                              REG_DWORD,</div>
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;                                              &amp;data[i],</div>
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;                                              <span class="keyword">sizeof</span>(<a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>));</div>
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;            <span class="keywordflow">if</span> (!NT_SUCCESS(retStatus)) {</div>
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; </div>
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;                <span class="comment">//</span></div>
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;                <span class="comment">// If something failed, stop</span></div>
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;                <span class="comment">//</span></div>
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; </div>
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;                <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;            }</div>
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;        }</div>
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;    }</div>
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; </div>
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;    <span class="keywordflow">return</span> retStatus;</div>
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;}</div>
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; </div>
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; </div>
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;NTSTATUS</div>
<div class="line"><a name="l01239"></a><span class="lineno"><a class="line" href="a00899.html#a66d6a111a66ffcd8a8ccb89742fd0a64"> 1239</a></span>&#160;<a class="code" href="a00665.html#a74dce85d73485fdf46d61ce465e18061">UserSetDisplayDriverParameters</a>(</div>
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;    PUNICODE_STRING        deviceName,</div>
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;    <a class="code" href="a00899.html#a66d45395271597521ff27e0a72253d9f">DISP_DRIVER_PARAM_TYPE</a> ParamType,</div>
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;    PDEVMODEW              pdevmode,</div>
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;    PRECT                  pRect)</div>
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;{</div>
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; </div>
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;    NTSTATUS retStatus = STATUS_UNSUCCESSFUL;</div>
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;    HANDLE   hkRegistry;</div>
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;    <a class="code" href="a00665.html#a01e58bda8aaf9059fe3ffa0ddd55567b">DISP_DRIVER_REGISTRY_TYPE</a> registryParam = <a class="code" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa01ae391162e54069de625bdc7049e934">DispDriverRegHardwareProfileCreate</a>;</div>
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; </div>
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: SetParms\n&quot;</span>));</div>
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; </div>
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;    <span class="keywordflow">switch</span> (ParamType) {</div>
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; </div>
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="a00899.html#afc13cb8b9a1ddb236b66ee390aa8efdda6760d6d8884c7ede93accae00a0e84b1">DispDriverParamDefault</a>:</div>
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; </div>
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: SetParms: Default Settings\n&quot;</span>));</div>
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; </div>
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;        <span class="comment">// try the hardware profile first and see if we can get parameters</span></div>
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;        <span class="comment">// from that.  If that fails, fall back to getting the system</span></div>
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;        <span class="comment">// parameters.</span></div>
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; </div>
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;        <span class="keywordflow">while</span> (1) {</div>
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; </div>
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;            hkRegistry = <a class="code" href="a00665.html#ae157271d2738ad5440f4428d44232e65">UserGetRegistryHandleFromDeviceMap</a>(deviceName,</div>
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;                                                            registryParam,</div>
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;                                                            FALSE,</div>
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;                                                            NULL);</div>
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; </div>
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;            <span class="keywordflow">if</span> (hkRegistry) {</div>
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; </div>
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;                retStatus = <a class="code" href="a00665.html#a99ff717624d5af5628c02ebf95a506ce">UserWriteDisplayDriverParameters</a>(RTL_REGISTRY_HANDLE,</div>
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;                                                             (LPWSTR) hkRegistry,</div>
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;                                                             pdevmode,</div>
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;                                                             pRect);</div>
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;                ZwClose(hkRegistry);</div>
<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;            }</div>
<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; </div>
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;            <span class="keywordflow">if</span> ( (NT_SUCCESS(retStatus)) ||</div>
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;                 (registryParam != <a class="code" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa01ae391162e54069de625bdc7049e934">DispDriverRegHardwareProfileCreate</a>) ) {</div>
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;                <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;            }</div>
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; </div>
<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;            registryParam = <a class="code" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa58218890fafaa0643a59e9294a9843d0">DispDriverRegGlobal</a>;</div>
<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;        }</div>
<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; </div>
<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; </div>
<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="a00899.html#afc13cb8b9a1ddb236b66ee390aa8efddaff58d8407e3f19ebdcedc76990bfb988">DispDriverParamUser</a>:</div>
<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; </div>
<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: SetParms: USER Settings\n&quot;</span>));</div>
<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; </div>
<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;        retStatus = <a class="code" href="a00665.html#a99ff717624d5af5628c02ebf95a506ce">UserWriteDisplayDriverParameters</a>(RTL_REGISTRY_USER,</div>
<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;                                                     L<span class="stringliteral">&quot;BUGBUG&quot;</span>,</div>
<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;                                                     pdevmode,</div>
<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;                                                     pRect);</div>
<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; </div>
<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; </div>
<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;    <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; </div>
<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;        <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>,</div>
<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;              <span class="stringliteral">&quot;UserSetDisplayDriverParameters - invalid type\n&quot;</span>);</div>
<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; </div>
<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;        retStatus = STATUS_INVALID_PARAMETER;</div>
<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; </div>
<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;    }</div>
<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; </div>
<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; </div>
<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: SetParms: Exit\n\n&quot;</span>));</div>
<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; </div>
<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;    <span class="keywordflow">return</span> (retStatus);</div>
<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;}</div>
<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; </div>
<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; </div>
<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; </div>
<div class="line"><a name="l01326"></a><span class="lineno"><a class="line" href="a00665.html#a64f37a06db6b3bcaf0b9bb15887675e6"> 1326</a></span>&#160;HDEV <a class="code" href="a00665.html#a64f37a06db6b3bcaf0b9bb15887675e6">UserLoadDisplayDriver</a>(</div>
<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;    <a class="code" href="a02601.html">PPHYSICAL_DEV_INFO</a>      physinfo,</div>
<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;    PUNICODE_STRING         deviceName,</div>
<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;    PUNICODE_STRING         pstrDisplayDriver,</div>
<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;    LPDEVMODEW              lpdevmodeInformation,</div>
<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;    BOOL                    bDefaultDisplay,</div>
<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;    BOOL                    bMulti,</div>
<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;    PDEVICE_LOCK           *pDevLock)</div>
<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;{</div>
<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; </div>
<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;    HDEV hdev = NULL;</div>
<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;    LPWSTR lpstrDisplayDriverName;</div>
<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;    LPWSTR lpstrOrg;</div>
<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; </div>
<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDisplayDriver: Enter\n&quot;</span>));</div>
<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; </div>
<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;<span class="comment">     * Try to get the display driver list.</span></div>
<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; </div>
<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;    lpstrOrg = lpstrDisplayDriverName = <a class="code" href="a00665.html#a1178983eb56b481bd0bcb216f7d144cf">UserGetDisplayDriverNames</a>(deviceName);</div>
<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; </div>
<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;    <span class="keywordflow">if</span> (lpstrDisplayDriverName != NULL) {</div>
<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; </div>
<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDisplayDriver: Display driver list was present.\n&quot;</span>));</div>
<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; </div>
<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;        <span class="keywordflow">while</span> (*lpstrDisplayDriverName != UNICODE_NULL) {</div>
<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; </div>
<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;<span class="comment">             * Try to load the driver</span></div>
<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; </div>
<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDisplayDriver: Trying to load display driver %ws \n&quot;</span>, lpstrDisplayDriverName));</div>
<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; </div>
<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;            hdev = GreCreateHDEV(lpstrDisplayDriverName,</div>
<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;                                 lpdevmodeInformation,</div>
<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;                                 physinfo-&gt;<a class="code" href="a02601.html#a671c14f1e07dff0246711968044db9c4">pDeviceHandle</a>,</div>
<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;                                 bDefaultDisplay,</div>
<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;                                 pDevLock);</div>
<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; </div>
<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;<span class="comment">             * If this is a multi-display driver, then we have to call down</span></div>
<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;<span class="comment">             * with an MDEV also to complete initialization.</span></div>
<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;<span class="comment">             *</span></div>
<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;<span class="comment">             *</span></div>
<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; </div>
<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;            <span class="keywordflow">if</span> (hdev &amp;&amp; (bMulti == FALSE) &amp;&amp;</div>
<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;                (physinfo-&gt;<a class="code" href="a02601.html#a65e861fd574d4b5dd70d500641b395e8">stateFlags</a> &amp; DISPLAY_DEVICE_MULTI_DRIVER)) {</div>
<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; </div>
<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;                MDEV mdev;</div>
<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; </div>
<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;                mdev.mdevID                  = <span class="stringliteral">&#39;MDEV&#39;</span>;</div>
<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;                mdev.cmdev                   = 1;</div>
<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;                mdev.mdevPos[0].hdev         = hdev;</div>
<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;                mdev.mdevPos[0].flags        = 0;</div>
<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;                mdev.mdevPos[0].rcPos.left   = 0;</div>
<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;                mdev.mdevPos[0].rcPos.top    = 0;</div>
<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;                mdev.mdevPos[0].rcPos.right  = lpdevmodeInformation-&gt;dmPelsWidth;</div>
<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;                mdev.mdevPos[0].rcPos.bottom = lpdevmodeInformation-&gt;dmPelsHeight;</div>
<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; </div>
<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;                hdev = GreCreateHDEV(lpstrDisplayDriverName,</div>
<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;                                     (LPDEVMODEW) &amp;mdev,</div>
<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;                                     NULL,</div>
<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;                                     bDefaultDisplay,</div>
<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;                                     pDevLock);</div>
<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;            }</div>
<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; </div>
<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;            <span class="keywordflow">if</span> (hdev) {</div>
<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; </div>
<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;                <span class="keywordflow">if</span> (pstrDisplayDriver) {</div>
<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;                    RtlCreateUnicodeString(pstrDisplayDriver, lpstrDisplayDriverName);</div>
<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;                }</div>
<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; </div>
<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;                <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(lpdevmodeInformation-&gt;dmSize == <span class="keyword">sizeof</span>(DEVMODEW));</div>
<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; </div>
<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;                <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;            }</div>
<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; </div>
<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; </div>
<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;UserInit LoadDisplayDriver: DisplayDriverLoad failed\n&quot;</span>));</div>
<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; </div>
<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;<span class="comment">             * Go to the next name in the list of displays to try again.</span></div>
<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;            <span class="keywordflow">while</span> (*lpstrDisplayDriverName != UNICODE_NULL) {</div>
<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;                lpstrDisplayDriverName++;</div>
<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;            }</div>
<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; </div>
<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;            lpstrDisplayDriverName++;</div>
<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; </div>
<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;        }</div>
<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; </div>
<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;        UserFreePool(lpstrOrg);</div>
<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;    }</div>
<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; </div>
<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDisplayDriver: Exit\n\n&quot;</span>));</div>
<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; </div>
<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;    <span class="keywordflow">return</span> hdev;</div>
<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; </div>
<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;}</div>
<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; </div>
<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; </div>
<div class="line"><a name="l01451"></a><span class="lineno"><a class="line" href="a00899.html#a291aca25f546e197608f39e4887001a9"> 1451</a></span>&#160;<a class="code" href="a02601.html">PPHYSICAL_DEV_INFO</a> <a class="code" href="a00665.html#a291aca25f546e197608f39e4887001a9">UserGetDeviceFromName</a>(</div>
<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;    PUNICODE_STRING pstrDeviceName,</div>
<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;    ULONG           bShareState)</div>
<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;{</div>
<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;    ULONG              i = 0;</div>
<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;    NTSTATUS           status;</div>
<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;    <a class="code" href="a02601.html">PPHYSICAL_DEV_INFO</a> physInfo = NULL;</div>
<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;    PFILE_OBJECT       pFileObject = NULL;</div>
<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;    PDEVICE_OBJECT     pDeviceObject = NULL;</div>
<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;    UNICODE_STRING     uString;</div>
<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; </div>
<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDev: Enter\n&quot;</span>));</div>
<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; </div>
<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;<span class="comment">     * passing in a NULL string means the default device should be used.</span></div>
<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;    <span class="keywordflow">if</span> ((pstrDeviceName == NULL) || (pstrDeviceName-&gt;Buffer == NULL)) {</div>
<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; </div>
<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;        <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;UserInit: GetDev: NULL name passed in - Exit\n\n&quot;</span>);</div>
<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;        <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;    }</div>
<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; </div>
<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;<span class="comment">     * Look for an existing handle in our handle table.</span></div>
<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;<span class="comment">     * Start by looking for the VGACOMPATIBLE string, which is</span></div>
<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;<span class="comment">     * our VgaCompatible device</span></div>
<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;    RtlInitUnicodeString(&amp;uString, L<span class="stringliteral">&quot;VGACOMPATIBLE&quot;</span>);</div>
<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; </div>
<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;    <span class="keywordflow">if</span> (RtlEqualUnicodeString(pstrDeviceName,</div>
<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;                              &amp;uString,</div>
<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;                              TRUE)) {</div>
<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; </div>
<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;<span class="comment">         * This is the VGA device !.</span></div>
<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; </div>
<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;        i             = 0;</div>
<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;        pDeviceObject = <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[0].<a class="code" href="a02601.html#a671c14f1e07dff0246711968044db9c4">pDeviceHandle</a>;</div>
<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;        physInfo      = &amp;<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[0];</div>
<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; </div>
<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;    } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; </div>
<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;        <span class="keywordflow">for</span> (i = 1; i &lt; <a class="code" href="a03257.html#a5f96c779e6c723388217ee64122dbec5">cphysDevInfo</a>; i++) {</div>
<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; </div>
<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;            RtlInitUnicodeString(&amp;uString, <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].szNtDeviceName);</div>
<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; </div>
<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;            <span class="keywordflow">if</span> (RtlEqualUnicodeString(pstrDeviceName,</div>
<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;                                      &amp;uString,</div>
<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;                                      TRUE)) {</div>
<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; </div>
<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;<span class="comment">                 * We have the handle to this device.</span></div>
<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; </div>
<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;                pDeviceObject = <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].<a class="code" href="a02601.html#a671c14f1e07dff0246711968044db9c4">pDeviceHandle</a>;</div>
<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;                physInfo      = &amp;<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i];</div>
<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; </div>
<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;                <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160;            }</div>
<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;        }</div>
<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;    }</div>
<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; </div>
<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;    <span class="keywordflow">if</span> (physInfo == NULL) {</div>
<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; </div>
<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160;        <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>, <span class="stringliteral">&quot;UserDeviceFromName: Calling for a non-exsting device!\n&quot;</span>);</div>
<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;        <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;    }</div>
<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; </div>
<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;<span class="comment">     * NOTE:</span></div>
<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;<span class="comment">     * We depend on the value of &#39;i&#39; coming out of the loop in the case</span></div>
<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;<span class="comment">     * we the pDeviceObject is NULL.</span></div>
<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; </div>
<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDev: Acquiring Device\n&quot;</span>));</div>
<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; </div>
<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;    <span class="keywordflow">if</span> (pDeviceObject == NULL) {</div>
<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; </div>
<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;<span class="comment">         * Assume failure again by reseting phyinfo to NULL.</span></div>
<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;<span class="comment">         * work off the index &#39;i&#39; in the gphysinfo array.</span></div>
<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;        physInfo = NULL;</div>
<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; </div>
<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;<span class="comment">         * If we are looking for the VGA device (i == 0), and the handle was</span></div>
<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;<span class="comment">         * NULL we can not really initialize it at this point.  It may just not</span></div>
<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;<span class="comment">         * exist.  So that will simply fail.</span></div>
<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;<span class="comment">         *</span></div>
<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;<span class="comment">         * Try to open any other device</span></div>
<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;        <span class="keywordflow">if</span> (i != 0) {</div>
<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; </div>
<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;            HANDLE hkRegistry;</div>
<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;            NTSTATUS Status;</div>
<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;            ULONG vgaCompat = 0;</div>
<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;            ULONG defaultValue = 0;</div>
<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;            ULONG multiDriver = 0;</div>
<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;            ULONG mirroring = 0;</div>
<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; </div>
<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;<span class="comment">             * No one owns this device.  Let&#39;s try to open it.</span></div>
<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;<span class="comment">             *</span></div>
<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;<span class="comment">            /*</span></div>
<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;<span class="comment">             * Get the sofware configuration data for this driver from</span></div>
<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;<span class="comment">             * the registry, and store it in the physinfo.</span></div>
<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;            hkRegistry = <a class="code" href="a00665.html#ae157271d2738ad5440f4428d44232e65">UserGetRegistryHandleFromDeviceMap</a>(</div>
<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;                                                pstrDeviceName,</div>
<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;                                                <a class="code" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa58218890fafaa0643a59e9294a9843d0">DispDriverRegGlobal</a>,</div>
<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;                                                FALSE,</div>
<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;                                                &amp;Status);</div>
<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;            <span class="keywordflow">if</span> (hkRegistry) {</div>
<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; </div>
<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;                RTL_QUERY_REGISTRY_TABLE multiQueryTable[] = {</div>
<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;                    {NULL, RTL_QUERY_REGISTRY_DIRECT, <a class="code" href="a00665.html#a5de8fc19f0066ed30a41b9c0ef4d4deb">SoftwareSettings</a>[0],</div>
<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;                     &amp;multiDriver, REG_DWORD, &amp;defaultValue, 4},</div>
<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;                    {NULL, RTL_QUERY_REGISTRY_DIRECT, <a class="code" href="a00665.html#a5de8fc19f0066ed30a41b9c0ef4d4deb">SoftwareSettings</a>[1],</div>
<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;                     &amp;mirroring,   REG_DWORD, &amp;defaultValue, 4},</div>
<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;                    {NULL, RTL_QUERY_REGISTRY_DIRECT, <a class="code" href="a00665.html#a5de8fc19f0066ed30a41b9c0ef4d4deb">SoftwareSettings</a>[2],</div>
<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;                     &amp;vgaCompat,   REG_DWORD, &amp;defaultValue, 4},</div>
<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;                    {NULL, 0, NULL}</div>
<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;                };</div>
<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; </div>
<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;                RtlQueryRegistryValues(RTL_REGISTRY_HANDLE,</div>
<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;                                       (PWSTR)hkRegistry,</div>
<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;                                       &amp;multiQueryTable[0],</div>
<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;                                       NULL,</div>
<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;                                       NULL);</div>
<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; </div>
<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;                ZwClose(hkRegistry);</div>
<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; </div>
<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;                <span class="keywordflow">if</span> (multiDriver)</div>
<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;                    <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].<a class="code" href="a02601.html#a65e861fd574d4b5dd70d500641b395e8">stateFlags</a> |= DISPLAY_DEVICE_MULTI_DRIVER;</div>
<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;                <span class="keywordflow">if</span> (mirroring)</div>
<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;                    <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].<a class="code" href="a02601.html#a65e861fd574d4b5dd70d500641b395e8">stateFlags</a> |= DISPLAY_DEVICE_MIRRORING_DRIVER;</div>
<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;                <span class="keywordflow">if</span> (vgaCompat)</div>
<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;                    <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].<a class="code" href="a02601.html#a65e861fd574d4b5dd70d500641b395e8">stateFlags</a> |= <a class="code" href="a00665.html#a2ccdbdde9498b06c48c5eca065b9a1fd">DISPLAY_DEVICE_VGA_COMPATIBLE</a>;</div>
<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; </div>
<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;                TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDev: Display driver is %sa multi display driver\n&quot;</span>,</div>
<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;                             multiDriver ? <span class="stringliteral">&quot;&quot;</span> : <span class="stringliteral">&quot;NOT &quot;</span>));</div>
<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;                TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDev: Display driver is %smirroring the desktop\n&quot;</span>,</div>
<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160;                            mirroring ? <span class="stringliteral">&quot;&quot;</span> : <span class="stringliteral">&quot;NOT &quot;</span>));</div>
<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;                TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDev: Display driver is %sVga Compatible\n&quot;</span>,</div>
<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;                            vgaCompat ? <span class="stringliteral">&quot;&quot;</span> : <span class="stringliteral">&quot;NOT &quot;</span>));</div>
<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; </div>
<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;<span class="comment">                 * Opening a new device will however cause The Initialize</span></div>
<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;<span class="comment">                 * routine of a miniport driver to be called.</span></div>
<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;<span class="comment">                 * This may cause the driver to change some state, which could</span></div>
<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160;<span class="comment">                 * affect the state of another driver on the same device</span></div>
<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;<span class="comment">                 * (opening the weitek driver if the vga is running.</span></div>
<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;<span class="comment">                 *</span></div>
<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;<span class="comment">                 * For that reason, the other device should be temporarily</span></div>
<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;<span class="comment">                 * closed down when we do the create, and then reinitialized</span></div>
<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;<span class="comment">                 * afterwards.</span></div>
<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;<span class="comment">                 *</span></div>
<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;<span class="comment">                 * Handle special case when we are opening initial device and</span></div>
<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;<span class="comment">                 * gpDispInfo-&gt;hDev does not exist yet.</span></div>
<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;                <span class="keywordflow">if</span> (<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>) {</div>
<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;                    TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDev: Disabling Global Device\n&quot;</span>));</div>
<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;                    bDisableDisplay(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>);</div>
<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160;                }</div>
<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; </div>
<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;                status = IoGetDeviceObjectPointer(pstrDeviceName,</div>
<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;                                                  (ACCESS_MASK) (0),</div>
<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;                                                  &amp;pFileObject,</div>
<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;                                                  &amp;pDeviceObject);</div>
<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; </div>
<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;                TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDev: GetDeviceObject on %ws: returned %08lx\n&quot;</span>,</div>
<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160;                            pstrDeviceName-&gt;Buffer, pDeviceObject));</div>
<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; </div>
<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;                <span class="keywordflow">if</span> (NT_SUCCESS(status)) {</div>
<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; </div>
<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;<span class="comment">                     * This is a valid device.</span></div>
<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;                    <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].<a class="code" href="a02601.html#a671c14f1e07dff0246711968044db9c4">pDeviceHandle</a> = pDeviceObject;</div>
<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;                    <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].<a class="code" href="a02601.html#ad199e09483960703c70d31130d1a6cf9">pFileObject</a>   = pFileObject;</div>
<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; </div>
<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;                    physInfo = &amp;<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i];</div>
<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; </div>
<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;                }</div>
<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; </div>
<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;                <span class="keywordflow">if</span> (<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>) {</div>
<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;                    TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDev: Re-enabling global device\n&quot;</span>));</div>
<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;                    <a class="code" href="a00656.html#a90ee9bcff7d18cc35574aa5a0b21d376">UserResetDisplayDevice</a>(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>);</div>
<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;                }</div>
<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;            }</div>
<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;        }</div>
<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160;    }</div>
<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; </div>
<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; </div>
<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;<span class="comment">     * If we are getting the handle, don&#39;t let an exclusive request</span></div>
<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;<span class="comment">     * get an exclusive handle</span></div>
<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; </div>
<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;    <span class="keywordflow">if</span> (physInfo) {</div>
<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; </div>
<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;<span class="comment">         * Getting a NOTOWNED handle always succeeds</span></div>
<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160;        <span class="keywordflow">if</span> (bShareState != USER_DEVICE_NOTOWNED) {</div>
<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; </div>
<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;            <span class="keywordflow">if</span> (physInfo-&gt;<a class="code" href="a02601.html#a2a9b923a44a5a1384ba6b845933e516c">DevOwned</a> == USER_DEVICE_EXCLUSIVE) {</div>
<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; </div>
<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;<span class="comment">                 * Oops - failiure</span></div>
<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;                <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;UserGetDeviceFromName: Exclusive request on already exclusive device\n&quot;</span>);</div>
<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;                physInfo = NULL;</div>
<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; </div>
<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;            } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; </div>
<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160;                <span class="keywordflow">if</span> (bShareState == USER_DEVICE_EXCLUSIVE) {</div>
<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; </div>
<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;                    <span class="keywordflow">if</span> (physInfo-&gt;<a class="code" href="a02601.html#a2a9b923a44a5a1384ba6b845933e516c">DevOwned</a> == USER_DEVICE_SHARED) {</div>
<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; </div>
<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;                        <span class="comment">/*</span></div>
<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;<span class="comment">                         * Oops - failiure</span></div>
<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;<span class="comment">                         */</span></div>
<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;                        <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;UserGetDeviceFromName: Exclusive request on already exclusive device\n&quot;</span>);</div>
<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;                        physInfo = NULL;</div>
<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; </div>
<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;                    } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; </div>
<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160;                        <span class="comment">/*</span></div>
<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;<span class="comment">                         * Mark the object as now being owned exclusively.</span></div>
<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;<span class="comment">                         */</span></div>
<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;                        physInfo-&gt;<a class="code" href="a02601.html#a2a9b923a44a5a1384ba6b845933e516c">DevOwned</a> = USER_DEVICE_EXCLUSIVE;</div>
<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;                    }</div>
<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; </div>
<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;                } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; </div>
<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;<span class="comment">                     * Mark it as being owned, but shared (so we can create multiple</span></div>
<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;<span class="comment">                     * desktops on it.</span></div>
<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160;                    physInfo-&gt;<a class="code" href="a02601.html#a2a9b923a44a5a1384ba6b845933e516c">DevOwned</a> = USER_DEVICE_SHARED;</div>
<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;                }</div>
<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;            }</div>
<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;        }</div>
<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;    }</div>
<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; </div>
<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;    <span class="keywordflow">if</span> (physInfo) {</div>
<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;<span class="comment">         * If the device was acquired properly, increment the share</span></div>
<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;<span class="comment">         * refcount</span></div>
<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;        physInfo-&gt;<a class="code" href="a02601.html#a8ce83830b42b65fa6b57fbf904555e08">cOwnCount</a>++;</div>
<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160;    }</div>
<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; </div>
<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: GetDev: Exit\n\n&quot;</span>));</div>
<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; </div>
<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;    <span class="keywordflow">return</span> physInfo;</div>
<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; </div>
<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;}</div>
<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; </div>
<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; </div>
<div class="line"><a name="l01721"></a><span class="lineno"><a class="line" href="a00899.html#ae1691bdb53d715053026f55f68e5d3f4"> 1721</a></span>&#160;VOID <a class="code" href="a00665.html#ae1691bdb53d715053026f55f68e5d3f4">UserFreeDevice</a>(</div>
<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;    <a class="code" href="a02601.html">PPHYSICAL_DEV_INFO</a> physInfo)</div>
<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;{</div>
<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;    <span class="comment">// EnterCrit();</span></div>
<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; </div>
<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;    <span class="keywordflow">if</span> (physInfo == NULL) {</div>
<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;        <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;UserFreeDevice: Releasing a NULL Device!\n&quot;</span>);</div>
<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;    }</div>
<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; </div>
<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160;    <span class="keywordflow">if</span> (physInfo-&gt;<a class="code" href="a02601.html#a8ce83830b42b65fa6b57fbf904555e08">cOwnCount</a> == 0) {</div>
<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;        <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;UserFreeDevice: Own count is NULL - device not owned !\n&quot;</span>);</div>
<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160;    }</div>
<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; </div>
<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;    <span class="keywordflow">if</span> (--physInfo-&gt;<a class="code" href="a02601.html#a8ce83830b42b65fa6b57fbf904555e08">cOwnCount</a> == 0) {</div>
<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; </div>
<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;        <span class="comment">// The device is no longer in use</span></div>
<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; </div>
<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;        physInfo-&gt;<a class="code" href="a02601.html#a2a9b923a44a5a1384ba6b845933e516c">DevOwned</a> = USER_DEVICE_NOTOWNED;</div>
<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;    }</div>
<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; </div>
<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;    <span class="comment">// LeaveCrit();</span></div>
<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;}</div>
<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; </div>
<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; </div>
<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;VOID</div>
<div class="line"><a name="l01758"></a><span class="lineno"><a class="line" href="a00665.html#af58d084fab4188005b01c976f76bbefa"> 1758</a></span>&#160;<a class="code" href="a00665.html#af58d084fab4188005b01c976f76bbefa">UserBuildDevmodeList</a>(</div>
<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;    <a class="code" href="a02601.html">PPHYSICAL_DEV_INFO</a> physinfo)</div>
<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;{</div>
<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; </div>
<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;    UNICODE_STRING us;</div>
<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;    LPWSTR         lpdisplayNames = NULL;</div>
<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;    LPWSTR         lpdisplay;</div>
<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; </div>
<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;    <a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>          cbOutputSize;</div>
<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;    LPDEVMODEW     tmpBuffer;</div>
<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;    PBYTE          reallocBuffer;</div>
<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; </div>
<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; </div>
<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;<span class="comment">     * Mirror devices do not report their modes</span></div>
<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160;<span class="comment">     * Any operation that requires matching the modes with the device</span></div>
<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;<span class="comment">     * will fail.</span></div>
<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;    <span class="keywordflow">if</span> (physinfo-&gt;<a class="code" href="a02601.html#a65e861fd574d4b5dd70d500641b395e8">stateFlags</a> &amp; DISPLAY_DEVICE_MIRRORING_DRIVER) {</div>
<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; </div>
<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;        <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(physinfo-&gt;<a class="code" href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">cbdevmodeInfo</a> == 0);</div>
<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160;        <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(physinfo-&gt;<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a> == NULL);</div>
<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; </div>
<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160;        <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160;    }</div>
<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; </div>
<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160;<span class="comment">     * check if the information is cached already</span></div>
<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;<span class="comment">     * if not, then get the information from the drivers.</span></div>
<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160;<span class="comment">     *</span></div>
<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;<span class="comment">     * NOTE : we may want to synchronize access to this list</span></div>
<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;<span class="comment">     * of modes so that we can dynamically update the list</span></div>
<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;<span class="comment">     * when plug - and - play arrives.</span></div>
<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;<span class="comment">     *</span></div>
<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;<span class="comment">     * NOTE : the list of text modes is built at boot time, and we depend</span></div>
<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160;<span class="comment">     * on that list being valid if the physinfo is returned.</span></div>
<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;<span class="comment">     * see InitLoadDriver().</span></div>
<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160; </div>
<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: BuildDevmode: Enter\n&quot;</span>));</div>
<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; </div>
<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;    <span class="keywordflow">if</span> ( (physinfo-&gt;<a class="code" href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">cbdevmodeInfo</a> == 0) &amp;&amp;</div>
<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160;         (physinfo-&gt;<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a> == NULL) ) {</div>
<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; </div>
<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: BuildDevmode: Rebuild List\n&quot;</span>));</div>
<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; </div>
<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160;        RtlInitUnicodeString(&amp;us, &amp;(physinfo-&gt;<a class="code" href="a02601.html#a19e507bdf81c67304d8ba81c600ac0eb">szNtDeviceName</a>[0]));</div>
<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; </div>
<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;        lpdisplayNames = <a class="code" href="a00665.html#a1178983eb56b481bd0bcb216f7d144cf">UserGetDisplayDriverNames</a>(&amp;us);</div>
<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; </div>
<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;        <span class="keywordflow">if</span> (lpdisplayNames) {</div>
<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; </div>
<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160;            lpdisplay = lpdisplayNames;</div>
<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; </div>
<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160;<span class="comment">             * For each Display Driver Name we have, call GDI to get the</span></div>
<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;<span class="comment">             * Devmode information.</span></div>
<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160;<span class="comment">             * If the driver returns zero, assume no modes available and</span></div>
<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160;<span class="comment">             * go on to the next driver.</span></div>
<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160;<span class="comment">             * use a large 60K buffer to call down to the driver</span></div>
<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; </div>
<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;            tmpBuffer = UserAllocPoolWithQuota(0xFF00, TAG_SYSTEM);</div>
<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; </div>
<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;            <span class="keywordflow">if</span> (tmpBuffer) {</div>
<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; </div>
<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160;                <span class="keywordflow">while</span> (*lpdisplay != UNICODE_NULL) {</div>
<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; </div>
<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;                    <span class="comment">//</span></div>
<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160;                    <span class="comment">// BUGBUG 64K may not be large enough - we may want</span></div>
<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160;                    <span class="comment">// to retry with a larger buffer !</span></div>
<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;                    <span class="comment">//</span></div>
<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; </div>
<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;                    cbOutputSize = GreGetDriverModes(lpdisplay,</div>
<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;                                                     (HANDLE)physinfo-&gt;<a class="code" href="a02601.html#a671c14f1e07dff0246711968044db9c4">pDeviceHandle</a>,</div>
<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160;                                                     0xFF00,</div>
<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160;                                                     tmpBuffer);</div>
<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; </div>
<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;                    <span class="keywordflow">if</span> (cbOutputSize) {</div>
<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; </div>
<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;                        <span class="comment">//</span></div>
<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;                        <span class="comment">// create a new buffer copy the old data into it</span></div>
<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160;                        <span class="comment">// and append the new data at the end - we want</span></div>
<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;                        <span class="comment">// a continuous buffer for all the data.</span></div>
<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;                        <span class="comment">//</span></div>
<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; </div>
<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;                        reallocBuffer = UserAllocPoolWithQuota(</div>
<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160;                                physinfo-&gt;<a class="code" href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">cbdevmodeInfo</a> + cbOutputSize,</div>
<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;                                TAG_SYSTEM);</div>
<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; </div>
<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;                        <span class="keywordflow">if</span> (reallocBuffer) {</div>
<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; </div>
<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;                            <span class="keywordflow">if</span> (physinfo-&gt;<a class="code" href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">cbdevmodeInfo</a>) {</div>
<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; </div>
<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160;                                <span class="comment">//</span></div>
<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;                                <span class="comment">// Copt the contents of the olf buffer</span></div>
<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160;                                <span class="comment">// and free it</span></div>
<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;                                <span class="comment">//</span></div>
<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; </div>
<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;                                RtlCopyMemory(reallocBuffer,</div>
<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;                                              physinfo-&gt;<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a>,</div>
<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;                                              physinfo-&gt;<a class="code" href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">cbdevmodeInfo</a>);</div>
<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; </div>
<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160;                                UserFreePool(physinfo-&gt;<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a>);</div>
<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;                            }</div>
<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; </div>
<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;                            RtlCopyMemory(reallocBuffer +</div>
<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;                                              physinfo-&gt;<a class="code" href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">cbdevmodeInfo</a>,</div>
<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;                                          tmpBuffer,</div>
<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160;                                          cbOutputSize);</div>
<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; </div>
<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160;                            physinfo-&gt;<a class="code" href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">cbdevmodeInfo</a> += cbOutputSize;</div>
<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;                            physinfo-&gt;<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a> = (PDEVMODEW) reallocBuffer;</div>
<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; </div>
<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;                        } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; </div>
<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;                            <a class="code" href="a00371.html#ae61d954062a9ece52e350e54cad9a23d">RIPERR0</a>(ERROR_INVALID_PARAMETER, <a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>, <span class="stringliteral">&quot;EnumDisplaySettings failed realloc\n&quot;</span>);</div>
<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; </div>
<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160;                        }</div>
<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; </div>
<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160;                    } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; </div>
<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;                        <a class="code" href="a00371.html#ae61d954062a9ece52e350e54cad9a23d">RIPERR0</a>(ERROR_INVALID_PARAMETER, <a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>, <span class="stringliteral">&quot;EnumDisplaySettings - display driver not present\n&quot;</span>);</div>
<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; </div>
<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160;                    }</div>
<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; </div>
<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160;<span class="comment">                     * Go to the next name.</span></div>
<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;<span class="comment">                     *</span></div>
<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;<span class="comment">                     * NOTE: Display driver names are a seried of</span></div>
<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;<span class="comment">                     * UNICODE_NULL terminated strings stored in a</span></div>
<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;<span class="comment">                     * REG_MULTI_SZ value, and therefore the end of</span></div>
<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160;<span class="comment">                     * the list is denoted by two</span></div>
<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160;<span class="comment">                     * consecutive UNICODE_NULL characters.</span></div>
<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; </div>
<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160;                    <span class="keywordflow">while</span> (*lpdisplay != UNICODE_NULL) {</div>
<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160;                        lpdisplay++;</div>
<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160;                    }</div>
<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160;                    lpdisplay++;</div>
<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; </div>
<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;                }</div>
<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; </div>
<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160;                UserFreePool(tmpBuffer);</div>
<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; </div>
<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160;            } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; </div>
<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160;                <a class="code" href="a00371.html#ae61d954062a9ece52e350e54cad9a23d">RIPERR0</a>(ERROR_INVALID_PARAMETER, <a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>, <span class="stringliteral">&quot;EnumDisplaySettings Initial Alloc failed\n&quot;</span>);</div>
<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160;            }</div>
<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; </div>
<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160;            UserFreePool(lpdisplayNames);</div>
<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160;        }</div>
<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; </div>
<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160;        <span class="keywordflow">if</span> ( (physinfo-&gt;<a class="code" href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">cbdevmodeInfo</a> == 0) &amp;&amp;</div>
<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160;             (physinfo-&gt;<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a> == NULL) ) {</div>
<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; </div>
<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;            <a class="code" href="a00665.html#aa8b64103d379d1cc9e91a96db783aa63">UserLogDisplayDriverEvent</a>(MsgInvalidDisplayDriver);</div>
<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160;        }</div>
<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160; </div>
<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160;    } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; </div>
<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: BuildDevmode: Use cached list\n&quot;</span>));</div>
<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; </div>
<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160;    }</div>
<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; </div>
<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: BuildDevmode: Exit\n\n&quot;</span>));</div>
<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; </div>
<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; </div>
<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160;}</div>
<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; </div>
<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; </div>
<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; </div>
<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160;VOID</div>
<div class="line"><a name="l01942"></a><span class="lineno"><a class="line" href="a00665.html#a8c6e355920ecb443e8d0f47bfbfff26d"> 1942</a></span>&#160;<a class="code" href="a00665.html#a8c6e355920ecb443e8d0f47bfbfff26d">UserReleaseDevmodeList</a>(</div>
<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;    <a class="code" href="a02601.html">PPHYSICAL_DEV_INFO</a> physinfo)</div>
<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;{</div>
<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160;<span class="comment">     * Free up the resources - as long as it&#39;s not the VGA.</span></div>
<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160;<span class="comment">     * Assume the VGA is always first</span></div>
<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; </div>
<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160;    <span class="keywordflow">if</span> (physinfo != <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>) {</div>
<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; </div>
<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160;        physinfo-&gt;<a class="code" href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">cbdevmodeInfo</a> = 0;</div>
<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; </div>
<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160;        <span class="keywordflow">if</span> (physinfo-&gt;<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a>) {</div>
<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160;            UserFreePool(physinfo-&gt;<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a>);</div>
<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;            physinfo-&gt;<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a> = NULL;</div>
<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160;        }</div>
<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160;    }</div>
<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; </div>
<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160;}</div>
<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160; </div>
<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; </div>
<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; </div>
<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160;NTSTATUS</div>
<div class="line"><a name="l01977"></a><span class="lineno"><a class="line" href="a00899.html#a7f72492be72deb72088a46321f3703e9"> 1977</a></span>&#160;<a class="code" href="a00665.html#a7f72492be72deb72088a46321f3703e9">ProbeAndCaptureDevmode</a>(</div>
<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;    PUNICODE_STRING pstrDeviceName,</div>
<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;    PDEVMODEW *DestinationDevmode,</div>
<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160;    PDEVMODEW SourceDevmode,</div>
<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160;    BOOL bKernelMode)</div>
<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;{</div>
<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;    NTSTATUS  ntRet;</div>
<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160;    BOOL      bRet = FALSE;</div>
<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160;    BOOL      btmpError;</div>
<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160;    ULONG     sourceSize;</div>
<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160;    ULONG     sourceSizeExtra;</div>
<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;    ULONG     sizeExtra;</div>
<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;    PDEVMODEW matchedDevmode = NULL;</div>
<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;    PDEVMODEW partialDevmode;</div>
<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; </div>
<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160;    <a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>     tmpDisplayFlags = 0;</div>
<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;    <a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>     tmpPanningWidth = 0;</div>
<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;    <a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>     tmpPanningHeight = 0;</div>
<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160; </div>
<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160; </div>
<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: CaptMatchDevmode: Entering\n&quot;</span>));</div>
<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; </div>
<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;    *DestinationDevmode = NULL;</div>
<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; </div>
<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160;    <span class="keywordflow">if</span> (SourceDevmode == NULL) {</div>
<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160; </div>
<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: CaptMatchDevmode: Exit DEVMODE NULL\n\n&quot;</span>));</div>
<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160;        <span class="keywordflow">return</span> STATUS_SUCCESS;</div>
<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;    }</div>
<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160; </div>
<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160;    partialDevmode = UserAllocPool(<span class="keyword">sizeof</span>(DEVMODEW) + MAXUSHORT,</div>
<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160;                                   TAG_DEVMODE);</div>
<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160; </div>
<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160;    <span class="keywordflow">if</span> (partialDevmode == NULL) {</div>
<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160; </div>
<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: CaptMatchDevmode: Could not allocate partial DEVMODE\n\n&quot;</span>));</div>
<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160;        <span class="keywordflow">return</span> STATUS_UNSUCCESSFUL;</div>
<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160;    }</div>
<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160; </div>
<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160;<span class="comment">     * Put everything in a try except so we can always reference the original</span></div>
<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160;<span class="comment">     * passed in structure.</span></div>
<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160;    <span class="keywordflow">try</span> {</div>
<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160; </div>
<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;        <span class="keywordflow">if</span> (!bKernelMode) {</div>
<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160;            ProbeForRead(SourceDevmode,</div>
<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;                         FIELD_OFFSET(DEVMODEW, dmFields),</div>
<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160;                         <span class="keyword">sizeof</span>(<a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>));</div>
<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160;        }</div>
<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; </div>
<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;<span class="comment">         * Capture these so that they don&#39;t change right after the probe.</span></div>
<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160; </div>
<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160;        sourceSize      = SourceDevmode-&gt;dmSize;</div>
<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160;        sourceSizeExtra = SourceDevmode-&gt;dmDriverExtra;</div>
<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160; </div>
<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160;        <span class="keywordflow">if</span> (!bKernelMode) {</div>
<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160;            ProbeForRead(SourceDevmode,</div>
<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160;                         sourceSize + sourceSizeExtra,</div>
<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160;                         <span class="keyword">sizeof</span>(<a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>));</div>
<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160;        }</div>
<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160; </div>
<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160;<span class="comment">         * At the introduction time of this API, the DEVMODE already contained</span></div>
<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;<span class="comment">         * up to the dmDisplayFrequency field.  We will fail is the DEVMODE is</span></div>
<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160;<span class="comment">         * smaller than that.</span></div>
<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; </div>
<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160;        <span class="keywordflow">if</span> (sourceSize &gt;= FIELD_OFFSET(DEVMODEW, dmICMMethod)) {</div>
<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; </div>
<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160;            UNICODE_STRING uString;</div>
<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160; </div>
<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160;<span class="comment">             * Lets build a temporary DEVMODE that will contain the</span></div>
<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160;<span class="comment">             * &quot;wished for&quot; DEVMODE, based on matching from the registry.</span></div>
<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160;<span class="comment">             * Only match the basic devmode.  Other fields (optional ones</span></div>
<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160;<span class="comment">             * will be added later)</span></div>
<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160;<span class="comment">             *</span></div>
<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160;<span class="comment">             * NOTE special case VGA mode so that we don&#39;t try to match to the</span></div>
<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160;<span class="comment">             * current screen mode.</span></div>
<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; </div>
<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160;            RtlZeroMemory(partialDevmode, <span class="keyword">sizeof</span>(DEVMODEW));</div>
<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160;            partialDevmode-&gt;dmSize = 0xDDDD;</div>
<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160;            partialDevmode-&gt;dmDriverExtra = MAXUSHORT;</div>
<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160; </div>
<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160;            RtlInitUnicodeString(&amp;uString, L<span class="stringliteral">&quot;VGACOMPATIBLE&quot;</span>);</div>
<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; </div>
<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160;            <span class="keywordflow">if</span> (RtlEqualUnicodeString(pstrDeviceName,</div>
<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160;                                      &amp;uString,</div>
<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160;                                      TRUE)) {</div>
<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; </div>
<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160;<span class="comment">                 * BUGBUG - need to verify these structures.</span></div>
<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; </div>
<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;                TRACE_INIT((<span class="stringliteral">&quot;UserInit: CaptMatchDevmode: DEVMODE for fullscreen\n\n&quot;</span>));</div>
<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160; </div>
<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160;                *partialDevmode = *SourceDevmode;</div>
<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160; </div>
<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160;            } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160; </div>
<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160;                <span class="keywordflow">if</span> (!NT_SUCCESS(<a class="code" href="a00665.html#a1496fe4e3afa850f6bd625b0c3542b78">UserGetDisplayDriverParameters</a>(pstrDeviceName,</div>
<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160;                                                               partialDevmode,</div>
<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;                                                               <a class="code" href="a00665.html#a4f95d12ae9db57753d1ce7447479f0ee">gbBaseVideo</a>))) {</div>
<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160;                    partialDevmode-&gt;dmDriverExtra = 0;</div>
<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160; </div>
<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160;                    <span class="keywordflow">if</span> (<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>) {</div>
<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;                        <span class="comment">/*</span></div>
<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160;<span class="comment">                         * Use the caps as a guess for this.</span></div>
<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160;<span class="comment">                         */</span></div>
<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160; </div>
<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;                        <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>, <span class="stringliteral">&quot;UserInit: CaptMatchDevmode: Could not get current devmode\n&quot;</span>);</div>
<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160; </div>
<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160;                        partialDevmode-&gt;dmBitsPerPel =</div>
<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160;                            GreGetDeviceCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, BITSPIXEL) *</div>
<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160;                            GreGetDeviceCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, PLANES);</div>
<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160;                        partialDevmode-&gt;dmPelsWidth  =</div>
<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;                            GreGetDeviceCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, HORZRES);</div>
<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160;                        partialDevmode-&gt;dmPelsHeight =</div>
<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160;                            GreGetDeviceCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, VERTRES);</div>
<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160;                        partialDevmode-&gt;dmDisplayFrequency =</div>
<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;                            GreGetDeviceCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, VREFRESH);</div>
<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160;                    }</div>
<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;                }</div>
<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; </div>
<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160;                <span class="keywordflow">if</span> ((SourceDevmode-&gt;dmFields &amp; DM_BITSPERPEL) &amp;&amp;</div>
<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160;                    (SourceDevmode-&gt;dmBitsPerPel != 0)) {</div>
<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; </div>
<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160;                    partialDevmode-&gt;dmBitsPerPel = SourceDevmode-&gt;dmBitsPerPel;</div>
<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160;                }</div>
<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160; </div>
<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160;                <span class="keywordflow">if</span> ((SourceDevmode-&gt;dmFields &amp; DM_PELSWIDTH) &amp;&amp;</div>
<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160;                    (SourceDevmode-&gt;dmPelsWidth != 0)) {</div>
<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; </div>
<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160;                    partialDevmode-&gt;dmPelsWidth = SourceDevmode-&gt;dmPelsWidth;</div>
<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160;                }</div>
<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; </div>
<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160;                <span class="keywordflow">if</span> ((SourceDevmode-&gt;dmFields &amp; DM_PELSHEIGHT) &amp;&amp;</div>
<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160;                    (SourceDevmode-&gt;dmPelsHeight != 0)) {</div>
<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; </div>
<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160;                    partialDevmode-&gt;dmPelsHeight = SourceDevmode-&gt;dmPelsHeight;</div>
<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160;                }</div>
<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160; </div>
<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;                <span class="keywordflow">if</span> ((SourceDevmode-&gt;dmFields &amp; DM_DISPLAYFREQUENCY) &amp;&amp;</div>
<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160;                    (SourceDevmode-&gt;dmDisplayFrequency != 0)) {</div>
<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; </div>
<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;                    partialDevmode-&gt;dmDisplayFrequency = SourceDevmode-&gt;dmDisplayFrequency;</div>
<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160; </div>
<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160;                } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160; </div>
<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160;<span class="comment">                     * Only use the registry refresh rate if we are going</span></div>
<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160;<span class="comment">                     * down in resolution.  If we are going up in resolution,</span></div>
<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160;<span class="comment">                     * we will want to pick the lowest refresh rate that</span></div>
<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160;<span class="comment">                     * makes sense.</span></div>
<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160;<span class="comment">                     *</span></div>
<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160;<span class="comment">                     * The exception to this is if we have resetting the mode</span></div>
<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;<span class="comment">                     * to the regsitry mode (passing in all 0&#39;s), in which case</span></div>
<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160;<span class="comment">                     * we want exactly what is in the registry.</span></div>
<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; </div>
<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160;                    <span class="keywordflow">if</span> ( ((SourceDevmode-&gt;dmPelsWidth != 0)  ||</div>
<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160;                          (SourceDevmode-&gt;dmPelsHeight != 0))    &amp;&amp;</div>
<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160;                          (<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>)                &amp;&amp;</div>
<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160;                          (partialDevmode-&gt;dmPelsWidth &gt;</div>
<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160;                             (USHORT) GreGetDeviceCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>,</div>
<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160;                                                       HORZRES))) {</div>
<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; </div>
<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160;                        partialDevmode-&gt;dmDisplayFrequency = 0;</div>
<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160;                    }</div>
<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160;                }</div>
<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160;            }</div>
<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; </div>
<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;            btmpError = FALSE;</div>
<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160; </div>
<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160;<span class="comment">             * These fields are somewhat optional.</span></div>
<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160;<span class="comment">             * We capture them if they are valid.  Otherwise, they will</span></div>
<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160;<span class="comment">             * be initialized back to zero.</span></div>
<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; </div>
<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160;<span class="comment">             * Pick whichever set of flags we can.  Source is first choice,</span></div>
<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160;<span class="comment">             * registry is second.</span></div>
<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; </div>
<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160;            <span class="keywordflow">if</span> (SourceDevmode-&gt;dmFields &amp; DM_DISPLAYFLAGS) {</div>
<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160;                <span class="keywordflow">if</span> (SourceDevmode-&gt;dmDisplayFlags &amp; (~DMDISPLAYFLAGS_VALID)) {</div>
<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160;                    btmpError = TRUE;</div>
<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160;                }</div>
<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160;                tmpDisplayFlags = SourceDevmode-&gt;dmDisplayFlags;</div>
<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160;            } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((partialDevmode-&gt;dmFields &amp; DM_DISPLAYFLAGS) &amp;&amp;</div>
<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160;                       (partialDevmode-&gt;dmDisplayFlags &amp;</div>
<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160;                            (~DMDISPLAYFLAGS_VALID))) {</div>
<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; </div>
<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160;                tmpDisplayFlags = partialDevmode-&gt;dmDisplayFlags;</div>
<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160;            }</div>
<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; </div>
<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160;<span class="comment">             * If the caller specified panning keep the value, unless it was</span></div>
<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160;<span class="comment">             * bigger than the resolution, which is an error.</span></div>
<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160;<span class="comment">             *</span></div>
<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160;<span class="comment">             * Otherwise, use the value from the registry if it makes sense</span></div>
<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160;<span class="comment">             * (i.e. panning is still smaller than the resolution).</span></div>
<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; </div>
<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160;            <span class="keywordflow">if</span> (SourceDevmode-&gt;dmFields &amp; DM_PANNINGWIDTH) {</div>
<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160;                <span class="keywordflow">if</span> (SourceDevmode-&gt;dmPanningWidth &gt; partialDevmode-&gt;dmPelsWidth) {</div>
<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160;                    btmpError = TRUE;</div>
<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160;                }</div>
<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160;                tmpPanningWidth = SourceDevmode-&gt;dmPanningWidth;</div>
<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160; </div>
<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160;            } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((partialDevmode-&gt;dmFields &amp; DM_PANNINGWIDTH) &amp;&amp;</div>
<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160;                       (partialDevmode-&gt;dmPanningWidth &lt;</div>
<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160;                            partialDevmode-&gt;dmPelsWidth)) {</div>
<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160; </div>
<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;                tmpPanningWidth = partialDevmode-&gt;dmPanningWidth;</div>
<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160;            }</div>
<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160; </div>
<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160;            <span class="keywordflow">if</span> (SourceDevmode-&gt;dmFields &amp; DM_PANNINGHEIGHT) {</div>
<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160;                <span class="keywordflow">if</span> (SourceDevmode-&gt;dmPanningHeight &gt; partialDevmode-&gt;dmPelsHeight) {</div>
<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160;                    btmpError = TRUE;</div>
<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160;                }</div>
<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160;                tmpPanningHeight = SourceDevmode-&gt;dmPanningHeight;</div>
<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160; </div>
<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160;            } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((partialDevmode-&gt;dmFields &amp; DM_PANNINGHEIGHT) &amp;&amp;</div>
<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160;                       (partialDevmode-&gt;dmPanningHeight &lt;</div>
<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160;                            partialDevmode-&gt;dmPelsHeight)) {</div>
<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160; </div>
<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160;                tmpPanningHeight = partialDevmode-&gt;dmPanningHeight;</div>
<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160;            }</div>
<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160; </div>
<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160; </div>
<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160;            <span class="keywordflow">if</span> (btmpError == TRUE) {</div>
<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160;<span class="comment">                 * The panning values or the flags are invalid</span></div>
<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160; </div>
<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;                <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;UserInit: CaptMatchDevmode: Invalid Optional DEVMODE fields\n&quot;</span>);</div>
<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160; </div>
<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160;            } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160; </div>
<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160;<span class="comment">                 * Allocate enough memory so we can store the whole devmode.</span></div>
<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160; </div>
<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160;                sizeExtra = sourceSizeExtra;</div>
<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160;                <span class="keywordflow">if</span> (sizeExtra == 0) {</div>
<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160;                    sizeExtra = partialDevmode-&gt;dmDriverExtra;</div>
<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160;                }</div>
<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160; </div>
<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160;                <span class="keywordflow">if</span> (matchedDevmode = UserAllocPool(<span class="keyword">sizeof</span>(DEVMODEW) + sizeExtra,</div>
<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160;                                                   TAG_DEVMODE)) {</div>
<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160; </div>
<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160;<span class="comment">                     * Zero out the DEVMODE in case we only get data for part</span></div>
<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160;<span class="comment">                     * of it from the driver.</span></div>
<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160; </div>
<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160;                    RtlZeroMemory(matchedDevmode, <span class="keyword">sizeof</span>(DEVMODEW));</div>
<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160; </div>
<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160;<span class="comment">                     * Let&#39;s copy any DriverExtra information that the</span></div>
<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160;<span class="comment">                     * application may have passed down while we are still in</span></div>
<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160;<span class="comment">                     * the try\except.  If we fail the call later, the memory</span></div>
<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160;<span class="comment">                     * will get deallocated anyways.</span></div>
<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160;<span class="comment">                     *</span></div>
<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160;<span class="comment">                     * If the application did not specify any such data, then</span></div>
<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160;<span class="comment">                     * copy it from the registry.</span></div>
<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160; </div>
<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160;                    <span class="keywordflow">if</span> (sourceSizeExtra) {</div>
<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160; </div>
<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160;                        RtlCopyMemory(matchedDevmode + 1,</div>
<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160;                                      (PUCHAR)SourceDevmode + sourceSize,</div>
<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160;                                      sizeExtra);</div>
<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160; </div>
<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160;                    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (partialDevmode-&gt;dmDriverExtra) {</div>
<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160; </div>
<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160;                        RtlCopyMemory(matchedDevmode + 1,</div>
<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160;                                      (PUCHAR)partialDevmode + partialDevmode-&gt;dmSize,</div>
<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160;                                      sizeExtra);</div>
<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160; </div>
<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160;                    }</div>
<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160;                }</div>
<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160;            }</div>
<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160;        }</div>
<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160; </div>
<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: CaptMatchDevmode: Capture Complete\n&quot;</span>));</div>
<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160; </div>
<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160;    } except (EXCEPTION_EXECUTE_HANDLER) {</div>
<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160;        <a class="code" href="a00371.html#a002956db9fb529e159fb441f09f39b42">RIPNTERR0</a>(GetExceptionCode(), <a class="code" href="a00371.html#ad6b24a3d61abdc148c8751b5c5add686">RIP_VERBOSE</a>, <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160; </div>
<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160;<span class="comment">         * If we hit an exception, free the buffer we have allocated.</span></div>
<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160; </div>
<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160;        <span class="keywordflow">if</span> (matchedDevmode) {</div>
<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160;            UserFreePool(matchedDevmode);</div>
<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160;        }</div>
<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160; </div>
<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160;        matchedDevmode = NULL;</div>
<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160;    }</div>
<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160; </div>
<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160;<span class="comment">     * This is our matching algorithm, based on requirements from Win95.</span></div>
<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160;<span class="comment">     *</span></div>
<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>&#160;<span class="comment">     * As a rule, a value in the DEVMODE is only valid is BOTH the value is</span></div>
<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160;<span class="comment">     * non-zero, and the dmFields flag is set.  Otherwise, the value from the</span></div>
<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160;<span class="comment">     * registry must be used</span></div>
<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160;<span class="comment">     *</span></div>
<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>&#160;<span class="comment">     * For X, Y and color depth, we will follow this rule.</span></div>
<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160;<span class="comment">     *</span></div>
<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160;<span class="comment">     * For the refresh rate, we are just trying to find something that works</span></div>
<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160;<span class="comment">     * for the screen.  We are far from guaranteed that the refresh rate in</span></div>
<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160;<span class="comment">     * the registry will be found for the X and Y we have since refresh rates</span></div>
<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160;<span class="comment">     * vary a lot from mode to mode.</span></div>
<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160;<span class="comment">     *</span></div>
<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>&#160;<span class="comment">     * So if the value is not specifically set and we do not find the exact</span></div>
<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160;<span class="comment">     * value from the reigstry in the new resolution, Then we will try 60 Hz.</span></div>
<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160;<span class="comment">     * We just want to get something that works MOST of the time so that the</span></div>
<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160;<span class="comment">     * user does not get a mode that does not work.</span></div>
<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160;<span class="comment">     *</span></div>
<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160;<span class="comment">     * For the other fields (dmDisplayFlags, and panning), we just pass on what</span></div>
<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160;<span class="comment">     * the application specified, and it&#39;s up to the driver to parse those,</span></div>
<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160;<span class="comment">     * fields appropriatly.</span></div>
<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160; </div>
<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160;<span class="comment">     * Now lets enumerate all the DEVMODEs and see if we have one</span></div>
<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160;<span class="comment">     * that matches what we need.</span></div>
<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160; </div>
<div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160;    <span class="keywordflow">if</span> (matchedDevmode) {</div>
<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160; </div>
<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160;        BOOL               bFirstMatch = FALSE;</div>
<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160;        BOOL               bMatch60 = FALSE;</div>
<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160;        BOOL               bExactMatch = FALSE;</div>
<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160;        <a class="code" href="a02601.html">PPHYSICAL_DEV_INFO</a> physinfo;</div>
<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160;        ULONG              cbdevmodeInfo;</div>
<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160;        PDEVMODEW          pdevmodeInfo;</div>
<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160; </div>
<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: CaptMatchDevmode: Start matching\n&quot;</span>));</div>
<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160; </div>
<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160;<span class="comment">         * PERF - Can we use someething else to synchronize access to the</span></div>
<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160;<span class="comment">         * list of modes ?</span></div>
<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160; </div>
<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160;        physinfo = <a class="code" href="a00665.html#a291aca25f546e197608f39e4887001a9">UserGetDeviceFromName</a>(pstrDeviceName, USER_DEVICE_NOTOWNED);</div>
<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160; </div>
<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160;        <span class="keywordflow">if</span> (physinfo) {</div>
<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160; </div>
<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160;            <span class="comment">// EnterCrit();</span></div>
<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160; </div>
<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>&#160;<span class="comment">             * We should never be doing a mode match on a MIRRORING_DRIVER</span></div>
<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160;            <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(!(physinfo-&gt;<a class="code" href="a02601.html#a65e861fd574d4b5dd70d500641b395e8">stateFlags</a> &amp; DISPLAY_DEVICE_MIRRORING_DRIVER));</div>
<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160; </div>
<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160;            <a class="code" href="a00665.html#af58d084fab4188005b01c976f76bbefa">UserBuildDevmodeList</a>(physinfo);</div>
<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160; </div>
<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160;            cbdevmodeInfo = physinfo-&gt;<a class="code" href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">cbdevmodeInfo</a>;</div>
<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160;            pdevmodeInfo = physinfo-&gt;<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a>;</div>
<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160; </div>
<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160;<span class="comment">             * If we did not find a mode because the caller was asking for the</span></div>
<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160;<span class="comment">             * default mode, then just return the first mode.</span></div>
<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160; </div>
<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160;            <span class="keywordflow">if</span> ((partialDevmode-&gt;dmBitsPerPel == 0) &amp;&amp;</div>
<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160;                (partialDevmode-&gt;dmPelsWidth  == 0) &amp;&amp;</div>
<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160;                (partialDevmode-&gt;dmPelsHeight == 0) &amp;&amp;</div>
<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160;                (physinfo-&gt;<a class="code" href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">cbdevmodeInfo</a> &gt; 0)) {</div>
<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160; </div>
<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160; </div>
<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160;                <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>, <span class="stringliteral">&quot;UserInit: CaptMatchDevmode: DEFAULT DEVMODE returned\n&quot;</span>);</div>
<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160; </div>
<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160;                bFirstMatch = TRUE;</div>
<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160;                RtlCopyMemory(matchedDevmode,</div>
<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160;                              physinfo-&gt;<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a>,</div>
<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160;                              physinfo-&gt;<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a>-&gt;dmSize);</div>
<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160; </div>
<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160;                cbdevmodeInfo = 0;</div>
<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160;            }</div>
<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160; </div>
<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160;            <span class="keywordflow">while</span> (cbdevmodeInfo &gt; 0) {</div>
<div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160; </div>
<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160;                <span class="keywordflow">if</span> ((partialDevmode-&gt;dmBitsPerPel ==</div>
<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160;                        pdevmodeInfo-&gt;dmBitsPerPel)  &amp;&amp;</div>
<div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160;                    (partialDevmode-&gt;dmPelsWidth ==</div>
<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160;                        pdevmodeInfo-&gt;dmPelsWidth)   &amp;&amp;</div>
<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160;                    (partialDevmode-&gt;dmPelsHeight ==</div>
<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160;                        pdevmodeInfo-&gt;dmPelsHeight)) {</div>
<div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160; </div>
<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160;<span class="comment">                     * Pick at least the first mode that matches the resolution</span></div>
<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160;<span class="comment">                     * so that we at least have a chance at working.</span></div>
<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160;<span class="comment">                     *</span></div>
<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160;<span class="comment">                     * Then pick 60 Hz if we find it.</span></div>
<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160;<span class="comment">                     *</span></div>
<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160;<span class="comment">                     * Even better, pick the refresh that matches the current</span></div>
<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160;<span class="comment">                     * refresh (we assume that what&#39;s in the registry has the</span></div>
<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160;<span class="comment">                     * best chance of working.</span></div>
<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160; </div>
<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160;                    <span class="keywordflow">if</span> (bFirstMatch == FALSE) {</div>
<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160; </div>
<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160;                        <span class="comment">/*</span></div>
<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160;<span class="comment">                         * BUGBUG The driver DEVMODE size could be smaller than</span></div>
<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160;<span class="comment">                         * our current DEVMODE size.</span></div>
<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160;<span class="comment">                         */</span></div>
<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160; </div>
<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160;                        RtlCopyMemory(matchedDevmode,</div>
<div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160;                                      pdevmodeInfo,</div>
<div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160;                                      pdevmodeInfo-&gt;dmSize);</div>
<div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160; </div>
<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160;                        bFirstMatch = TRUE;</div>
<div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160; </div>
<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160;                    }</div>
<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160; </div>
<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160;                    <span class="keywordflow">if</span> ((bMatch60 == FALSE) &amp;&amp;</div>
<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160;                        (pdevmodeInfo-&gt;dmDisplayFrequency == 60)) {</div>
<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160; </div>
<div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160;                        RtlCopyMemory(matchedDevmode,</div>
<div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160;                                      pdevmodeInfo,</div>
<div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160;                                      pdevmodeInfo-&gt;dmSize);</div>
<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160; </div>
<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160;                        bMatch60 = TRUE;</div>
<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160;                    }</div>
<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160; </div>
<div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160;                    <span class="keywordflow">if</span> (partialDevmode-&gt;dmDisplayFrequency ==</div>
<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160;                            pdevmodeInfo-&gt;dmDisplayFrequency) {</div>
<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160; </div>
<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160;                        <span class="comment">/*</span></div>
<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160;<span class="comment">                         * We found even better than 60 - an exact match !</span></div>
<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160;<span class="comment">                         */</span></div>
<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160; </div>
<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160;                        bMatch60 = TRUE;</div>
<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160;                        bExactMatch = TRUE;</div>
<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160; </div>
<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160;                        RtlCopyMemory(matchedDevmode,</div>
<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160;                                      pdevmodeInfo,</div>
<div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160;                                      pdevmodeInfo-&gt;dmSize);</div>
<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160; </div>
<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160;                        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160; </div>
<div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160;                        <span class="comment">/*</span></div>
<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160;<span class="comment">                         * For now, we ignore these other fields since they</span></div>
<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160;<span class="comment">                         * considered optional.</span></div>
<div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160;<span class="comment">                         */</span></div>
<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160; </div>
<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160;                        <span class="comment">// pdevmodeInfo-&gt;dmDisplayFlags;</span></div>
<div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160;                        <span class="comment">// pdevmodeInfo-&gt;dmPanningWidth;</span></div>
<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160;                        <span class="comment">// pdevmodeInfo-&gt;dmPanningHeight;</span></div>
<div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160; </div>
<div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160;                    }</div>
<div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160; </div>
<div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160;                }</div>
<div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160; </div>
<div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160;                cbdevmodeInfo -= (pdevmodeInfo-&gt;dmSize +</div>
<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160;                                  pdevmodeInfo-&gt;dmDriverExtra);</div>
<div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160; </div>
<div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160;                pdevmodeInfo = (PDEVMODEW) ((PUCHAR) pdevmodeInfo +</div>
<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160;                                            pdevmodeInfo-&gt;dmSize +</div>
<div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160;                                            pdevmodeInfo-&gt;dmDriverExtra);</div>
<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160;            }</div>
<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160; </div>
<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160;<span class="comment">             * Always set these flags since we initialize the values.</span></div>
<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160;<span class="comment">             * We need consistent flags all the time to avoid extra modesets</span></div>
<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160;<span class="comment">             *</span></div>
<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160;<span class="comment">             * Also, force font size to be static for now.</span></div>
<div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160;            <span class="keywordflow">if</span> (bFirstMatch) {</div>
<div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160; </div>
<div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160;                matchedDevmode-&gt;dmDriverExtra = (WORD) sizeExtra;</div>
<div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160;                matchedDevmode-&gt;dmLogPixels = partialDevmode-&gt;dmLogPixels;</div>
<div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160; </div>
<div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160;                matchedDevmode-&gt;dmFields |= (DM_PANNINGHEIGHT |</div>
<div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160;                                             DM_PANNINGWIDTH  |</div>
<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160;                                             DM_DISPLAYFLAGS  |</div>
<div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160;                                             DM_LOGPIXELS);</div>
<div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160; </div>
<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160;<span class="comment">                 * Check that the display driver specified all the other</span></div>
<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160;<span class="comment">                 * flags (res, color, frequency) properly.</span></div>
<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160; </div>
<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160;                <span class="keywordflow">if</span> ((matchedDevmode-&gt;dmFields &amp; <a class="code" href="a00665.html#a659e9e6483dce7cb60583d9b35f14de4">DM_INTERNAL_VALID_FLAGS</a>) !=</div>
<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160;                         <a class="code" href="a00665.html#a659e9e6483dce7cb60583d9b35f14de4">DM_INTERNAL_VALID_FLAGS</a>) {</div>
<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160; </div>
<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160;                    <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>, <span class="stringliteral">&quot;UserInit: CaptMatchDevmode: BAD DM FLAGS\n&quot;</span>);</div>
<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160;                }</div>
<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160; </div>
<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160;<span class="comment">                 * In the case of a good match, also use these extra values.</span></div>
<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160; </div>
<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160;                matchedDevmode-&gt;dmDisplayFlags  = tmpDisplayFlags;</div>
<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160;                matchedDevmode-&gt;dmPanningWidth  = tmpPanningWidth;</div>
<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160;                matchedDevmode-&gt;dmPanningHeight = tmpPanningHeight;</div>
<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160;            }</div>
<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160; </div>
<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160;<span class="comment">             * MAJOR optimization : Do not free the list at this point.</span></div>
<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160;<span class="comment">             * Many apps call EnumDisplaySettings, and for each mode call</span></div>
<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160;<span class="comment">             * ChangeDisplaySettings with it to see if it can be changed</span></div>
<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160;<span class="comment">             * dynamically.  When we free the list here, it causes to recreate</span></div>
<div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160;<span class="comment">             * the list for each mode we have in the list, which can take on</span></div>
<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160;<span class="comment">             * the order of 30 seconds if there are multiple display drivers</span></div>
<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160;<span class="comment">             * involved.</span></div>
<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160;<span class="comment">             * Even if we keep the list here, it should properly get freed</span></div>
<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160;<span class="comment">             * at the end of EnumDisplaySettings.</span></div>
<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160;<span class="comment">             * UserReleaseDevmodeList(physinfo);</span></div>
<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160; </div>
<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160;<span class="comment">             * LeaveCrit();</span></div>
<div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160; </div>
<div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160;            <a class="code" href="a00665.html#ae1691bdb53d715053026f55f68e5d3f4">UserFreeDevice</a>(physinfo);</div>
<div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160;        }</div>
<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160; </div>
<div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160;<span class="comment">         * Exit path</span></div>
<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160;        <span class="keywordflow">if</span> (bFirstMatch == TRUE) {</div>
<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160; </div>
<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;UserInit: CaptMatchDevmode: Matched DEVMODE\n&quot;</span>));</div>
<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160; </div>
<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;      Size        = %d\n&quot;</span>,    matchedDevmode-&gt;dmSize));</div>
<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;      Fields      = %08lx\n&quot;</span>, matchedDevmode-&gt;dmFields));</div>
<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;      XResolution = %d\n&quot;</span>,    matchedDevmode-&gt;dmPelsWidth));</div>
<div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;      YResolution = %d\n&quot;</span>,    matchedDevmode-&gt;dmPelsHeight));</div>
<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;      Bpp         = %d\n&quot;</span>,    matchedDevmode-&gt;dmBitsPerPel));</div>
<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;      Frequency   = %d\n&quot;</span>,    matchedDevmode-&gt;dmDisplayFrequency));</div>
<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;      Flags       = %d\n&quot;</span>,    matchedDevmode-&gt;dmDisplayFlags));</div>
<div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;      XPanning    = %d\n&quot;</span>,    matchedDevmode-&gt;dmPanningWidth));</div>
<div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;      YPanning    = %d\n&quot;</span>,    matchedDevmode-&gt;dmPanningHeight));</div>
<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;      DPI         = %d\n&quot;</span>,    matchedDevmode-&gt;dmLogPixels));</div>
<div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;      DriverExtra = %d&quot;</span>,    matchedDevmode-&gt;dmDriverExtra));</div>
<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160;            <span class="keywordflow">if</span> (matchedDevmode-&gt;dmDriverExtra) {</div>
<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160;                TRACE_INIT((<span class="stringliteral">&quot; - %08lx %08lx\n&quot;</span>,</div>
<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160;                            *(PULONG)(((PUCHAR)matchedDevmode)+matchedDevmode-&gt;dmSize),</div>
<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160;                            *(PULONG)(((PUCHAR)matchedDevmode)+matchedDevmode-&gt;dmSize + 4)));</div>
<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160;            } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160;                TRACE_INIT((<span class="stringliteral">&quot;\n&quot;</span>));</div>
<div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160;            }</div>
<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160; </div>
<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160;           *DestinationDevmode = matchedDevmode;</div>
<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160; </div>
<div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160;            ntRet = bExactMatch ? STATUS_SUCCESS : STATUS_RECEIVE_PARTIAL;</div>
<div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160; </div>
<div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160;        } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160; </div>
<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160;            UserFreePool(matchedDevmode);</div>
<div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160;            ntRet = STATUS_UNSUCCESSFUL;</div>
<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160;        }</div>
<div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160;    }</div>
<div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160; </div>
<div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160;    UserFreePool(partialDevmode);</div>
<div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160; </div>
<div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160;    <span class="keywordflow">if</span> (NT_SUCCESS(ntRet)) {</div>
<div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160;        <span class="keywordflow">if</span> (ntRet == STATUS_RECEIVE_PARTIAL) {</div>
<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;UserInit: CaptMatchDevmode: Exit partial success\n\n&quot;</span>));</div>
<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160;        } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;UserInit: CaptMatchDevmode: Exit exact success\n\n&quot;</span>));</div>
<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160;        }</div>
<div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160;    } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: CaptMatchDevmode: Exit error\n\n&quot;</span>));</div>
<div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160;    }</div>
<div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160; </div>
<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160;    <span class="keywordflow">return</span> (ntRet);</div>
<div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160;}</div>
<div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160; </div>
<div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160; </div>
<div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160; </div>
<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160;VOID</div>
<div class="line"><a name="l02566"></a><span class="lineno"><a class="line" href="a00899.html#a5f0c711ec59537d55a52988377290e3c"> 2566</a></span>&#160;<a class="code" href="a00665.html#a5f0c711ec59537d55a52988377290e3c">UserDestroyHDEV</a>(</div>
<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160;    HDEV hdev</div>
<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160;    )</div>
<div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160;{</div>
<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160;    GreDestroyHDEV(hdev);</div>
<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160;}</div>
<div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160; </div>
<div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160; </div>
<div class="line"><a name="l02579"></a><span class="lineno"><a class="line" href="a00899.html#a2422a3691562e077c000f1f99148dba8"> 2579</a></span>&#160;HDEV <a class="code" href="a00665.html#a2422a3691562e077c000f1f99148dba8">UserCreateHDEV</a>(</div>
<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160;    PUNICODE_STRING        pstrDevice,</div>
<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160;    LPDEVMODEW             lpdevmodeInformation,</div>
<div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160;    <a class="code" href="a02601.html">PPHYSICAL_DEV_INFO</a>     *physdevinfo,</div>
<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160;    PDEVICE_LOCK           *pDevLock)</div>
<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160;{</div>
<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160; </div>
<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160;    HDEV               hdev = NULL;</div>
<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160;    UNICODE_STRING     us;</div>
<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160;    <a class="code" href="a02601.html">PPHYSICAL_DEV_INFO</a> physinfo;</div>
<div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160; </div>
<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: UserCreateHDEV: Enter\n&quot;</span>));</div>
<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160; </div>
<div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160;<span class="comment">     * Determine if we have a different device to deal with</span></div>
<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160; </div>
<div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160;    physinfo = <a class="code" href="a00665.html#a291aca25f546e197608f39e4887001a9">UserGetDeviceFromName</a>(pstrDevice, USER_DEVICE_SHARED);</div>
<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160; </div>
<div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160;    <span class="keywordflow">if</span> (physinfo) {</div>
<div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160; </div>
<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160;<span class="comment">         * Disable the old device since we may reprogramming the same piece</span></div>
<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160;<span class="comment">         * of hardware</span></div>
<div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160;<span class="comment">         * BUGBUG - this needs to be fixed, by determining with which piece</span></div>
<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160;<span class="comment">         * of hardware the VGA is assocaited to.</span></div>
<div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160; </div>
<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160;        bDisableDisplay(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>);</div>
<div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160; </div>
<div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160;<span class="comment">         * Get the list of diplay drivers for this kernel driver.</span></div>
<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160; </div>
<div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: UserCreateHDEV: Load Display Driver\n&quot;</span>));</div>
<div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160; </div>
<div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160;        RtlInitUnicodeString(&amp;us, &amp;physinfo-&gt;<a class="code" href="a02601.html#a19e507bdf81c67304d8ba81c600ac0eb">szNtDeviceName</a>[0]);</div>
<div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160; </div>
<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160;        hdev = <a class="code" href="a00665.html#a64f37a06db6b3bcaf0b9bb15887675e6">UserLoadDisplayDriver</a>(physinfo,</div>
<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160;                                     &amp;us,</div>
<div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160;                                     NULL,</div>
<div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160;                                     lpdevmodeInformation,</div>
<div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>&#160;                                     FALSE,</div>
<div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160;                                     FALSE,</div>
<div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>&#160;                                     pDevLock);</div>
<div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>&#160; </div>
<div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160;        <span class="keywordflow">if</span> (hdev) {</div>
<div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160; </div>
<div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160;            *physdevinfo = physinfo;</div>
<div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>&#160; </div>
<div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>&#160;        } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>&#160; </div>
<div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;UserCreatePDEV: *** FAILED ***\n&quot;</span>));</div>
<div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>&#160; </div>
<div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>&#160;            <a class="code" href="a00656.html#a90ee9bcff7d18cc35574aa5a0b21d376">UserResetDisplayDevice</a>(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>);</div>
<div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160; </div>
<div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160;<span class="comment">             * Release the handle to this device</span></div>
<div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>&#160; </div>
<div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>&#160;            <a class="code" href="a00665.html#ae1691bdb53d715053026f55f68e5d3f4">UserFreeDevice</a>(physinfo);</div>
<div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>&#160;        }</div>
<div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160;    }</div>
<div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160; </div>
<div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: UserCreateHDEV: Exit\n\n&quot;</span>));</div>
<div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160; </div>
<div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160;    <span class="keywordflow">return</span> hdev;</div>
<div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>&#160;}</div>
<div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>&#160; </div>
<div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160; </div>
<div class="line"><a name="l02654"></a><span class="lineno"><a class="line" href="a00665.html#ad7c3f68db698140187a708775e0e3c0e"> 2654</a></span>&#160;HDC <a class="code" href="a00665.html#ad7c3f68db698140187a708775e0e3c0e">UserCreateExclusiveDC</a>(</div>
<div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160;    PUNICODE_STRING pstrDeviceName,</div>
<div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>&#160;    PDEVMODEW pDevmode,</div>
<div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>&#160;    PVOID     *ppDevice)</div>
<div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>&#160;{</div>
<div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160;    HDC            hdc = NULL;</div>
<div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160;    BYTE           DeviceName[256];</div>
<div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160;    ULONG          Value;</div>
<div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>&#160;    UNICODE_STRING unicodeString;</div>
<div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160;    UNICODE_STRING CaptDeviceName = *pstrDeviceName;</div>
<div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160; </div>
<div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>&#160;    <a class="code" href="a02601.html">PPHYSICAL_DEV_INFO</a> physinfo;</div>
<div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>&#160;    HDEV hdev;</div>
<div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>&#160;    PDEVICE_LOCK pDevLock;</div>
<div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>&#160; </div>
<div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>&#160; </div>
<div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: CreateExclusiveDC: Enter\n&quot;</span>));</div>
<div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>&#160; </div>
<div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>&#160;    <span class="comment">//</span></div>
<div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>&#160;    <span class="comment">// Attempt to get a handle to the kernel driver.</span></div>
<div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160;    <span class="comment">// NOTE: mess around with the name to get it the way USER</span></div>
<div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>&#160;    <span class="comment">// wants it !</span></div>
<div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>&#160;    <span class="comment">//</span></div>
<div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>&#160; </div>
<div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160;    <span class="keywordflow">if</span> (pstrDeviceName-&gt;Length &gt; 250)</div>
<div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160;    {</div>
<div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>&#160;        <a class="code" href="a00371.html#ae61d954062a9ece52e350e54cad9a23d">RIPERR0</a>(ERROR_INVALID_PARAMETER, <a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>, <span class="stringliteral">&quot;UserInit: CreateExclusiveDC: Exit\n\n&quot;</span>);</div>
<div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>&#160; </div>
<div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>&#160;        <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160;    }</div>
<div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160; </div>
<div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160;    <span class="comment">//</span></div>
<div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>&#160;    <span class="comment">// First check if the prefix is right.</span></div>
<div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>&#160;    <span class="comment">//</span></div>
<div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160; </div>
<div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160;    CaptDeviceName.Length = <span class="keyword">sizeof</span>(L<span class="stringliteral">&quot;\\\\.\\DISPLAY&quot;</span>) - <span class="keyword">sizeof</span>(UNICODE_NULL);</div>
<div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160; </div>
<div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160;    RtlInitUnicodeString(&amp;unicodeString,</div>
<div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160;                         L<span class="stringliteral">&quot;\\\\.\\DISPLAY&quot;</span>);</div>
<div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160; </div>
<div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160;    <span class="keywordflow">if</span> (RtlEqualUnicodeString(&amp;unicodeString,</div>
<div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160;                              &amp;CaptDeviceName,</div>
<div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160;                              FALSE))</div>
<div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160; </div>
<div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160;    {</div>
<div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: CreateExclusiveDC: Generating device name\n&quot;</span>));</div>
<div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>&#160; </div>
<div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>&#160;        <span class="comment">// Get the number of the video</span></div>
<div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>&#160; </div>
<div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160;        CaptDeviceName = *pstrDeviceName;</div>
<div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>&#160;        CaptDeviceName.Buffer = (LPWSTR) (((PUCHAR)CaptDeviceName.Buffer) +</div>
<div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>&#160;                                           <span class="keyword">sizeof</span>(L<span class="stringliteral">&quot;\\\\.\\DISPLAY&quot;</span>) -</div>
<div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160;                                           <span class="keyword">sizeof</span>(UNICODE_NULL));</div>
<div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>&#160; </div>
<div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160;        CaptDeviceName.Length -= (<span class="keyword">sizeof</span>(L<span class="stringliteral">&quot;\\\\.\\DISPLAY&quot;</span>) - <span class="keyword">sizeof</span>(UNICODE_NULL));</div>
<div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160; </div>
<div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160;        RtlUnicodeStringToInteger(&amp;CaptDeviceName,</div>
<div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>&#160;                                  10,</div>
<div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>&#160;                                  &amp;Value);</div>
<div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160; </div>
<div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160;        <span class="comment">// Put the prefix of the new string in the buffer.</span></div>
<div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160; </div>
<div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>&#160; </div>
<div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160;        RtlCopyMemory(DeviceName,</div>
<div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160;                      L<span class="stringliteral">&quot;\\Device\\Video&quot;</span>,</div>
<div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>&#160;                      <span class="keyword">sizeof</span>(L<span class="stringliteral">&quot;\\Device\\Video&quot;</span>));</div>
<div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160; </div>
<div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>&#160;        <span class="comment">// Append the number at the end (number - 1 !!!)</span></div>
<div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160; </div>
<div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160;        unicodeString.Buffer = (LPWSTR) (((PUCHAR)DeviceName) +</div>
<div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160;                                          <span class="keyword">sizeof</span>(L<span class="stringliteral">&quot;\\Device\\Video&quot;</span>) -</div>
<div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>&#160;                                          <span class="keyword">sizeof</span>(UNICODE_NULL));</div>
<div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160;        unicodeString.Length =</div>
<div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160;        unicodeString.MaximumLength = 256;</div>
<div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160; </div>
<div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>&#160;        RtlIntegerToUnicodeString(Value - 1,</div>
<div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>&#160;                                  10,</div>
<div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160;                                  &amp;unicodeString);</div>
<div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160; </div>
<div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160;        <span class="comment">// Reset the string size and pointer.</span></div>
<div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>&#160; </div>
<div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160;        unicodeString.Buffer = ((LPWSTR)DeviceName);</div>
<div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160;        unicodeString.Length +=  (<span class="keyword">sizeof</span>(L<span class="stringliteral">&quot;\\Device\\Video&quot;</span>) - <span class="keyword">sizeof</span>(UNICODE_NULL));</div>
<div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160; </div>
<div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: CreateExclusiveDC: device Name %ws\n&quot;</span>, DeviceName));</div>
<div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>&#160; </div>
<div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160;<span class="comment">         * Grab the User Crit since we are going to access User data</span></div>
<div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>&#160;        <span class="comment">// EnterCrit();</span></div>
<div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>&#160; </div>
<div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>&#160;<span class="comment">         * Ask for the object exclusive.</span></div>
<div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>&#160; </div>
<div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>&#160;        physinfo = <a class="code" href="a00665.html#a291aca25f546e197608f39e4887001a9">UserGetDeviceFromName</a>(&amp;unicodeString, USER_DEVICE_EXCLUSIVE);</div>
<div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>&#160; </div>
<div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>&#160;        <span class="keywordflow">if</span> (physinfo) {</div>
<div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>&#160; </div>
<div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>&#160;            PDEVMODEW pCaptDevmode;</div>
<div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>&#160; </div>
<div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;UserInit: CreateExclusiveDC: Got the display device handle\n&quot;</span>));</div>
<div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>&#160; </div>
<div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>&#160;            <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(pDevmode != NULL);</div>
<div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>&#160; </div>
<div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>&#160;            <span class="keywordflow">if</span> (NT_SUCCESS(<a class="code" href="a00665.html#a7f72492be72deb72088a46321f3703e9">ProbeAndCaptureDevmode</a>(&amp;unicodeString,</div>
<div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>&#160;                                                  &amp;pCaptDevmode,</div>
<div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>&#160;                                                  pDevmode,</div>
<div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>&#160;                                                  TRUE))) {</div>
<div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>&#160; </div>
<div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>&#160;                hdev = <a class="code" href="a00665.html#a64f37a06db6b3bcaf0b9bb15887675e6">UserLoadDisplayDriver</a>(physinfo,</div>
<div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>&#160;                                             &amp;unicodeString,</div>
<div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>&#160;                                             NULL,</div>
<div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>&#160;                                             pCaptDevmode,</div>
<div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>&#160;                                             FALSE,</div>
<div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>&#160;                                             FALSE,</div>
<div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>&#160;                                             &amp;pDevLock);</div>
<div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>&#160; </div>
<div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>&#160;                <span class="keywordflow">if</span> (hdev)</div>
<div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>&#160;                {</div>
<div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>&#160;                    TRACE_INIT((<span class="stringliteral">&quot;UserInit: CreateExclusiveDC: We have an hdev\n&quot;</span>));</div>
<div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>&#160; </div>
<div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>&#160;                    hdc = GreCreateDisplayDC(hdev, DCTYPE_DIRECT, FALSE);</div>
<div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>&#160; </div>
<div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>&#160;                    <span class="keywordflow">if</span> (hdc == NULL)</div>
<div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>&#160;                    {</div>
<div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>&#160;                        TRACE_INIT((<span class="stringliteral">&quot;UserInit: CreateExclusiveDC: Failed to get DC\n&quot;</span>));</div>
<div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>&#160;                        GreDestroyHDEV(hdev);</div>
<div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>&#160;                    }</div>
<div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>&#160;                }</div>
<div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>&#160; </div>
<div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>&#160;                UserFreePool(pCaptDevmode);</div>
<div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>&#160;            }</div>
<div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>&#160; </div>
<div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>&#160;            <span class="comment">// We may have to free the device manually if an error occured</span></div>
<div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>&#160;            <span class="comment">// part way through</span></div>
<div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>&#160;            <span class="comment">// After SetPhysicalDevice is done, Freeing the Device is done</span></div>
<div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>&#160;            <span class="comment">// as part of the PDEV destructor</span></div>
<div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>&#160; </div>
<div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>&#160;            <span class="keywordflow">if</span> (hdc == NULL)</div>
<div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>&#160;            {</div>
<div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>&#160;                <a class="code" href="a00665.html#ae1691bdb53d715053026f55f68e5d3f4">UserFreeDevice</a>(physinfo);</div>
<div class="line"><a name="l02806"></a><span class="lineno"> 2806</span>&#160;                *ppDevice = NULL;</div>
<div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>&#160;            }</div>
<div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>&#160;            {</div>
<div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>&#160;                *ppDevice = physinfo;</div>
<div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>&#160;            }</div>
<div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>&#160;        }</div>
<div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>&#160; </div>
<div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>&#160;        <span class="comment">// LeaveCrit();</span></div>
<div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>&#160;    }</div>
<div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>&#160; </div>
<div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: CreateExclusiveDC: Exit\n\n&quot;</span>));</div>
<div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>&#160; </div>
<div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>&#160;    <span class="keywordflow">return</span> (hdc);</div>
<div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>&#160;}</div>
<div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>&#160; </div>
<div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>&#160; </div>
<div class="line"><a name="l02832"></a><span class="lineno"><a class="line" href="a00665.html#a2d00e6c7566edba4539f45a026c4d150"> 2832</a></span>&#160;VOID <a class="code" href="a00665.html#a2d00e6c7566edba4539f45a026c4d150">UserDeleteExclusiveDC</a>(</div>
<div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>&#160;    HDC   hdc,</div>
<div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>&#160;    PVOID pDevice)</div>
<div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>&#160;{</div>
<div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>&#160;    <a class="code" href="a00899.html#ae451a2dc8791c420d7c956a63adc33ba">EnterCrit</a>();</div>
<div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>&#160;    <a class="code" href="a00665.html#ae1691bdb53d715053026f55f68e5d3f4">UserFreeDevice</a>((<a class="code" href="a02601.html">PPHYSICAL_DEV_INFO</a>) pDevice);</div>
<div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>&#160;    <a class="code" href="a00899.html#ac2181d07596893ed44d18aa267ce4d23">LeaveCrit</a>();</div>
<div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>&#160; </div>
<div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>&#160; </div>
<div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>&#160;    hdc;</div>
<div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>&#160;}</div>
<div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>&#160; </div>
<div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>&#160; </div>
<div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>&#160; </div>
<div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>&#160; </div>
<div class="line"><a name="l02855"></a><span class="lineno"><a class="line" href="a00665.html#ad5ab78c8fa70d3c1a63e786bc439ee73"> 2855</a></span>&#160;VOID <a class="code" href="a00665.html#ad5ab78c8fa70d3c1a63e786bc439ee73">InitUserScreen</a>(VOID)</div>
<div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>&#160;{</div>
<div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>&#160;    RECT rc;</div>
<div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>&#160; </div>
<div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: Initialize Screen\n&quot;</span>));</div>
<div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>&#160; </div>
<div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>&#160;<span class="comment">     * Create screen and memory dcs.</span></div>
<div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>&#160;    <a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a> = GreCreateDisplayDC(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>, DCTYPE_DIRECT, FALSE);</div>
<div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>&#160;    GreSelectFont(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, GreGetStockObject(SYSTEM_FONT));</div>
<div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>&#160;    GreSetDCOwner(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, OBJECT_OWNER_PUBLIC);</div>
<div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>&#160; </div>
<div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>&#160;    <a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81fb25d8b2c4e7012c2225397f6fe699">hdcBits</a> = GreCreateCompatibleDC(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>);</div>
<div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>&#160;    GreSelectFont(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81fb25d8b2c4e7012c2225397f6fe699">hdcBits</a>, GreGetStockObject(SYSTEM_FONT));</div>
<div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>&#160;    GreSetDCOwner(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81fb25d8b2c4e7012c2225397f6fe699">hdcBits</a>, OBJECT_OWNER_PUBLIC);</div>
<div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>&#160; </div>
<div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>&#160;    <a class="code" href="a03257.html#a1a36496b13c02b06ee64e9c01c029477">ghdcMem</a> = GreCreateCompatibleDC(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>);</div>
<div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>&#160;    GreSetDCOwner(<a class="code" href="a03257.html#a1a36496b13c02b06ee64e9c01c029477">ghdcMem</a>, OBJECT_OWNER_PUBLIC);</div>
<div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>&#160; </div>
<div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>&#160;    <a class="code" href="a03257.html#aa88de52d1162c4701fb38718c5b75b24">ghdcMem2</a> = GreCreateCompatibleDC(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>);</div>
<div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>&#160;    GreSetDCOwner(<a class="code" href="a03257.html#aa88de52d1162c4701fb38718c5b75b24">ghdcMem2</a>, OBJECT_OWNER_PUBLIC);</div>
<div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>&#160; </div>
<div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>&#160;<span class="comment">     * We need this when we initialize the first client; winlogon</span></div>
<div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>&#160;<span class="comment">     * which is before InitWinStaDevices is called</span></div>
<div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>&#160;    <a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#ad3e0b5376b5114f4269df20805a3a85e">cxPixelsPerInch</a> = GreGetDeviceCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, LOGPIXELSX);</div>
<div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>&#160;    <a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a2458aa3b22e3415ba05fc9fba634628d">cyPixelsPerInch</a> = GreGetDeviceCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, LOGPIXELSY);</div>
<div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>&#160;    <a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a3b0790cb5dc5ebed344f79adcd7d8fa0">cPlanes</a>         = GreGetDeviceCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, PLANES);</div>
<div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>&#160;    <a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a0a83e72210bd4213414535c6d7351d6f">cBitsPixel</a>      = GreGetDeviceCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, BITSPIXEL);</div>
<div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>&#160; </div>
<div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>&#160;    SYSMET(CXSCREEN) = GreGetDeviceCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, HORZRES);</div>
<div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>&#160;    SYSMET(CYSCREEN) = GreGetDeviceCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, VERTRES);</div>
<div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>&#160; </div>
<div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>&#160;    <a class="code" href="a00935.html#a479bbe69c871894f6ca23dfa237481ad">SetRect</a>(&amp;<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>,</div>
<div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>&#160;            0,</div>
<div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>&#160;            0,</div>
<div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>&#160;            GreGetDeviceCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, DESKTOPHORZRES),</div>
<div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>&#160;            GreGetDeviceCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, DESKTOPVERTRES));</div>
<div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>&#160; </div>
<div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>&#160;    <a class="code" href="a00935.html#a479bbe69c871894f6ca23dfa237481ad">SetRect</a>(&amp;<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a7ae1e4da76ad52e90f87fe39f43b2c4f">rcPrimaryScreen</a>,</div>
<div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>&#160;            0,</div>
<div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>&#160;            0,</div>
<div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>&#160;            SYSMET(CXSCREEN),</div>
<div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>&#160;            SYSMET(CYSCREEN));</div>
<div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>&#160; </div>
<div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>&#160;    <a class="code" href="a00935.html#a31ccccdb469eefbb55d18b71a26af0da">CopyRect</a>(&amp;(<a class="code" href="a00020.html#ad760da1dd81d9e84dee607d18edfde39">gpsi</a>-&gt;<a class="code" href="a02513.html#ad47c3c3836f1cb6cfb9ee4dd5d344496">rcWork</a>), &amp;<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>);</div>
<div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>&#160; </div>
<div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>&#160;<span class="comment">     * Do some initialization so we create the system colors.</span></div>
<div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>&#160;    <a class="code" href="a00821.html#a71ab7da1e1b58e117d8fe2bcca8fcdb0">FastOpenProfileUserMapping</a>();</div>
<div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>&#160; </div>
<div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>&#160;<span class="comment">     * Get the window sizing border width from WIN.INI.</span></div>
<div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>&#160;    <a class="code" href="a00020.html#ad760da1dd81d9e84dee607d18edfde39">gpsi</a>-&gt;<a class="code" href="a02513.html#ab4a2b5b4deef4d2014cbe6c3bb434b41">gclBorder</a> = <a class="code" href="a00821.html#af5e5b32f8171b8bb0dc4c27012b77918">FastGetProfileIntFromID</a>(PMAP_DESKTOP, STR_BORDERWIDTH, 3);</div>
<div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="a00020.html#ad760da1dd81d9e84dee607d18edfde39">gpsi</a>-&gt;<a class="code" href="a02513.html#ab4a2b5b4deef4d2014cbe6c3bb434b41">gclBorder</a> &lt; 1)</div>
<div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>&#160;        <a class="code" href="a00020.html#ad760da1dd81d9e84dee607d18edfde39">gpsi</a>-&gt;<a class="code" href="a02513.html#ab4a2b5b4deef4d2014cbe6c3bb434b41">gclBorder</a> = 1;</div>
<div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="a00020.html#ad760da1dd81d9e84dee607d18edfde39">gpsi</a>-&gt;<a class="code" href="a02513.html#ab4a2b5b4deef4d2014cbe6c3bb434b41">gclBorder</a> &gt; 50)</div>
<div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>&#160;        <a class="code" href="a00020.html#ad760da1dd81d9e84dee607d18edfde39">gpsi</a>-&gt;<a class="code" href="a02513.html#ab4a2b5b4deef4d2014cbe6c3bb434b41">gclBorder</a> = 50;</div>
<div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>&#160; </div>
<div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>&#160;    <a class="code" href="a00719.html#a333336c1f5ede3d334818ee0b68bddca">xxxLW_DCInit</a>();</div>
<div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>&#160; </div>
<div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>&#160;    <a class="code" href="a00821.html#aa99363e718e5d1c8d2d5232e51fe2716">FastCloseProfileUserMapping</a>();</div>
<div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>&#160; </div>
<div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>&#160;<span class="comment">     * Set up a desktop info structure that is visible in all</span></div>
<div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>&#160;<span class="comment">     * clients.</span></div>
<div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>&#160;    <a class="code" href="a03257.html#a49d76150714c65558a2481eef6093659">gpdiStatic</a> = <a class="code" href="a00680.html#a3d55823092d5efdce994868cd5efa7d8">SharedAlloc</a>(<span class="keyword">sizeof</span>(<a class="code" href="a02609.html">DESKTOPINFO</a>));</div>
<div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160;    RtlZeroMemory(<a class="code" href="a03257.html#a49d76150714c65558a2481eef6093659">gpdiStatic</a>, <span class="keyword">sizeof</span>(*<a class="code" href="a03257.html#a49d76150714c65558a2481eef6093659">gpdiStatic</a>));</div>
<div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>&#160; </div>
<div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>&#160;<span class="comment">     * Paint the screen background.</span></div>
<div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160;    <a class="code" href="a00935.html#a479bbe69c871894f6ca23dfa237481ad">SetRect</a>(&amp;rc, 0, 0, SYSMET(CXSCREEN), SYSMET(CYSCREEN));</div>
<div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>&#160;    <a class="code" href="a03212.html#a49402fd1bea89e835e5bc8bc96de744f">FillRect</a>(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#af0da313e582dc95c2853349086631cd8">hdcScreen</a>, &amp;rc, SYSHBR(<a class="code" href="a02801.html">DESKTOP</a>));</div>
<div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160;}</div>
<div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>&#160; </div>
<div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160; </div>
<div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160; </div>
<div class="line"><a name="l02945"></a><span class="lineno"><a class="line" href="a00899.html#a7c930cc47b4f158c545b3f7dbcdb75c5"> 2945</a></span>&#160;NTSTATUS <a class="code" href="a00665.html#a7c930cc47b4f158c545b3f7dbcdb75c5">InitLoadDriver</a>(VOID)</div>
<div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>&#160;{</div>
<div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>&#160;    <a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>              i, ii, iii, k;</div>
<div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>&#160;    NTSTATUS           Status;</div>
<div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>&#160;    PDEVMODEW          pdevmodeInformation;</div>
<div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>&#160;    DEVMODEW           sourceDevmodeInformation;</div>
<div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>&#160;    LPWSTR             hardErrorString;</div>
<div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>&#160;    UNICODE_STRING     UnicodeString;</div>
<div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>&#160;    UNICODE_STRING     UnicodeDeviceName;</div>
<div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>&#160;    HANDLE             hkRegistry = NULL;</div>
<div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>&#160;    BOOL               bCheckForAttached;</div>
<div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>&#160;    BOOL               bAttachMirroring = FALSE;</div>
<div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>&#160;    ULONG              attached;</div>
<div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>&#160;    ULONG              primary;</div>
<div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>&#160;    ULONG              mdevMultiDriver;</div>
<div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>&#160;    ULONG              mdevPrimary = (ULONG) -1;</div>
<div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>&#160;    BOOL               mdevPrimaryset = FALSE;</div>
<div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>&#160;    BOOL               displayInstalled = FALSE;</div>
<div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>&#160;    BOOL               vgaInstalled = FALSE;</div>
<div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>&#160;    OBJECT_ATTRIBUTES  ObjectAttributes;</div>
<div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>&#160;    <a class="code" href="a02601.html">PPHYSICAL_DEV_INFO</a> pphysinfo;</div>
<div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>&#160;    BOOL               bKeepDevice;</div>
<div class="line"><a name="l02967"></a><span class="lineno"> 2967</span>&#160;    BOOL               gbBaseVideoold;</div>
<div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>&#160; </div>
<div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>&#160;    <span class="comment">// TEMP</span></div>
<div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>&#160;    <a class="code" href="a02605.html">DISPLAYINFO</a>       localDispInfo[7] = {0};</div>
<div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>&#160;    MDEV              mdev[7];</div>
<div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>&#160; </div>
<div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>&#160; </div>
<div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: Starting Display Driver Load Sequence\n&quot;</span>));</div>
<div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>&#160; </div>
<div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>&#160;<span class="comment">     * Lets determine if the user specified a primary output device in the</span></div>
<div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>&#160;<span class="comment">     * case where they may be multiple video cards.</span></div>
<div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDriver: Looking for a primary device\n&quot;</span>));</div>
<div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>&#160; </div>
<div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>&#160;<span class="comment">     * Basevideo is considered a primary device in that the user will run</span></div>
<div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>&#160;<span class="comment">     * the vga driver.  This does override any other primary selection</span></div>
<div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>&#160;<span class="comment">     * the user may have put in the registry.</span></div>
<div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>&#160;    RtlInitUnicodeString(&amp;UnicodeString,</div>
<div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>&#160;                         L<span class="stringliteral">&quot;\\Registry\\Machine\\System\\CurrentControlSet\\&quot;</span></div>
<div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>&#160;                         L<span class="stringliteral">&quot;Control\\GraphicsDrivers\\BaseVideo&quot;</span>);</div>
<div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>&#160; </div>
<div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>&#160;    InitializeObjectAttributes(&amp;ObjectAttributes,</div>
<div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>&#160;                               &amp;UnicodeString,</div>
<div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>&#160;                               OBJ_CASE_INSENSITIVE,</div>
<div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>&#160;                               NULL,</div>
<div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>&#160;                               NULL);</div>
<div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>&#160; </div>
<div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>&#160;    Status = ZwOpenKey(&amp;hkRegistry,</div>
<div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>&#160;                       KEY_READ,</div>
<div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>&#160;                       &amp;ObjectAttributes);</div>
<div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>&#160; </div>
<div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>&#160;    <span class="keywordflow">if</span> (NT_SUCCESS( Status)) {</div>
<div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>&#160; </div>
<div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDriver: Found Basevideo\n&quot;</span>));</div>
<div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>&#160; </div>
<div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>&#160;        <a class="code" href="a00665.html#a4f95d12ae9db57753d1ce7447479f0ee">gbBaseVideo</a> = TRUE;</div>
<div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>&#160;        ZwClose(hkRegistry);</div>
<div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>&#160; </div>
<div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>&#160;        bCheckForAttached = FALSE;</div>
<div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>&#160; </div>
<div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>&#160;    } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>&#160; </div>
<div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>&#160;        bCheckForAttached = TRUE;</div>
<div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>&#160; </div>
<div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>&#160;    }</div>
<div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>&#160; </div>
<div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>&#160;    hkRegistry = NULL;</div>
<div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>&#160; </div>
<div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>&#160;<span class="comment">     * First time through the loop - try to find BASEVIDEO, if needed.</span></div>
<div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>&#160;<span class="comment">     * Second pass through the loop - find all the devices that are atached</span></div>
<div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>&#160;<span class="comment">     *    to the desktop.</span></div>
<div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>&#160;<span class="comment">     * Third time through the loop - try to find any device that we can boot</span></div>
<div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>&#160;<span class="comment">     *     with.</span></div>
<div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>&#160;<span class="comment">     * Fourth time through the loop - try to find any mirroring device.</span></div>
<div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>&#160; </div>
<div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>&#160;    <span class="keywordflow">while</span> (1) {</div>
<div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>&#160; </div>
<div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>&#160;        <span class="keywordflow">for</span> (i = 1; i &lt; <a class="code" href="a03257.html#a5f96c779e6c723388217ee64122dbec5">cphysDevInfo</a>; i++) {</div>
<div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>&#160; </div>
<div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>&#160;<span class="comment">             * NOTE:</span></div>
<div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>&#160;<span class="comment">             * Because we have many continue, break etc commands, lets close</span></div>
<div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>&#160;<span class="comment">             * our registry handle if we have one</span></div>
<div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>&#160; </div>
<div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>&#160;            <span class="keywordflow">if</span> (hkRegistry) {</div>
<div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>&#160;                ZwClose(hkRegistry);</div>
<div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>&#160;                hkRegistry = NULL;</div>
<div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>&#160;            }</div>
<div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>&#160; </div>
<div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>&#160;            bKeepDevice = FALSE;</div>
<div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>&#160; </div>
<div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>&#160; </div>
<div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;\nUserInit: LoadDriver: Trying to open device %ws \n&quot;</span>, <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].szNtDeviceName));</div>
<div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>&#160; </div>
<div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>&#160;            RtlInitUnicodeString(&amp;UnicodeDeviceName, <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].szNtDeviceName);</div>
<div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>&#160; </div>
<div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>&#160;            hkRegistry = <a class="code" href="a00665.html#ae157271d2738ad5440f4428d44232e65">UserGetRegistryHandleFromDeviceMap</a>(&amp;UnicodeDeviceName,</div>
<div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>&#160;                                                            <a class="code" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa58218890fafaa0643a59e9294a9843d0">DispDriverRegGlobal</a>,</div>
<div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>&#160;                                                            <a class="code" href="a00665.html#a4f95d12ae9db57753d1ce7447479f0ee">gbBaseVideo</a>,</div>
<div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>&#160;                                                            &amp;Status);</div>
<div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>&#160; </div>
<div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>&#160;            <span class="keywordflow">if</span> (hkRegistry == NULL) {</div>
<div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>&#160; </div>
<div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>&#160;<span class="comment">                 * Check the return code.</span></div>
<div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>&#160;<span class="comment">                 * If we just have bad configuration data, go to the next device.</span></div>
<div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>&#160;                <span class="keywordflow">if</span> (Status == STATUS_DEVICE_CONFIGURATION_ERROR) {</div>
<div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>&#160; </div>
<div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>&#160;<span class="comment">                     * The registry is not configured properly for that device.</span></div>
<div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>&#160;<span class="comment">                     * go on to the next one.</span></div>
<div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>&#160;                    <a class="code" href="a00665.html#aa8b64103d379d1cc9e91a96db783aa63">UserLogDisplayDriverEvent</a>(MsgInvalidConfiguration);</div>
<div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>&#160; </div>
<div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>&#160;                    <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>&#160; </div>
<div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>&#160;                }</div>
<div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>&#160; </div>
<div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>&#160;<span class="comment">                 * continue on a NO_SUCH_DEVICE because we are looking for</span></div>
<div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>&#160;<span class="comment">                 * a specific device, and we don&#39;t know it&#39;s number.</span></div>
<div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>&#160;<span class="comment">                 * We get a different error when there are no more devices.</span></div>
<div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>&#160; </div>
<div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>&#160;                <span class="keywordflow">if</span> (<a class="code" href="a00665.html#a4f95d12ae9db57753d1ce7447479f0ee">gbBaseVideo</a>) {</div>
<div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>&#160; </div>
<div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>&#160;                    <span class="keywordflow">if</span> (Status == STATUS_NO_SUCH_DEVICE) {</div>
<div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>&#160;                        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>&#160;                    }</div>
<div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>&#160;                }</div>
<div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>&#160; </div>
<div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>&#160;<span class="comment">                 * We must be out of devices. Exit the loop</span></div>
<div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>&#160;                <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>&#160;            }</div>
<div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>&#160; </div>
<div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>&#160;<span class="comment">             * Get the attached and primary data, which is per config (or also</span></div>
<div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>&#160;<span class="comment">             * global if necessary.</span></div>
<div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>&#160; </div>
<div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>&#160;            attached  = 0;</div>
<div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>&#160;            primary   = 0;</div>
<div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>&#160;            localDispInfo[i].<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.left = <a class="code" href="a00665.html#accf086041259110de4bd6aac57f64279">DEFAULT_POS_VALUE</a>;</div>
<div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>&#160;            localDispInfo[i].<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.top  = <a class="code" href="a00665.html#accf086041259110de4bd6aac57f64279">DEFAULT_POS_VALUE</a>;</div>
<div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>&#160; </div>
<div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>&#160;            <span class="keywordflow">if</span> (bCheckForAttached) {</div>
<div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>&#160; </div>
<div class="line"><a name="l03108"></a><span class="lineno"> 3108</span>&#160;                HANDLE hk2Registry = NULL;</div>
<div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>&#160;                ULONG  defaultValue = 0;</div>
<div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>&#160;                ULONG  defaultPosValue = <a class="code" href="a00665.html#accf086041259110de4bd6aac57f64279">DEFAULT_POS_VALUE</a>;</div>
<div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>&#160; </div>
<div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>&#160;                RTL_QUERY_REGISTRY_TABLE AttachedQueryTable[] = {</div>
<div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>&#160;                    {NULL, RTL_QUERY_REGISTRY_DIRECT, <a class="code" href="a00665.html#a998b6ce5633527f762d09b0f887e633f">AttachedSettings</a>[0],</div>
<div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>&#160;                     &amp;primary,                        REG_DWORD, &amp;defaultValue, 4},</div>
<div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>&#160;                    {NULL, RTL_QUERY_REGISTRY_DIRECT, <a class="code" href="a00665.html#a998b6ce5633527f762d09b0f887e633f">AttachedSettings</a>[1],</div>
<div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>&#160;                     &amp;attached,                       REG_DWORD, &amp;defaultValue, 4},</div>
<div class="line"><a name="l03117"></a><span class="lineno"> 3117</span>&#160;                    {NULL, RTL_QUERY_REGISTRY_DIRECT, <a class="code" href="a00665.html#a998b6ce5633527f762d09b0f887e633f">AttachedSettings</a>[2],</div>
<div class="line"><a name="l03118"></a><span class="lineno"> 3118</span>&#160;                     &amp;localDispInfo[i].<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.left, REG_DWORD, &amp;defaultPosValue, 4},</div>
<div class="line"><a name="l03119"></a><span class="lineno"> 3119</span>&#160;                    {NULL, RTL_QUERY_REGISTRY_DIRECT, <a class="code" href="a00665.html#a998b6ce5633527f762d09b0f887e633f">AttachedSettings</a>[3],</div>
<div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>&#160;                     &amp;localDispInfo[i].<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.top,  REG_DWORD, &amp;defaultPosValue, 4},</div>
<div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>&#160;                    {NULL, 0, NULL}</div>
<div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>&#160;                };</div>
<div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>&#160; </div>
<div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>&#160;                hk2Registry = <a class="code" href="a00665.html#ae157271d2738ad5440f4428d44232e65">UserGetRegistryHandleFromDeviceMap</a>(&amp;UnicodeDeviceName,</div>
<div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>&#160;                                                                 <a class="code" href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa5ce32297dc3f6df4e82c6e0790d30063">DispDriverRegHardwareProfile</a>,</div>
<div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>&#160;                                                                 FALSE,</div>
<div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>&#160;                                                                 NULL);</div>
<div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>&#160;                <span class="keywordflow">if</span> (hk2Registry) {</div>
<div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>&#160; </div>
<div class="line"><a name="l03130"></a><span class="lineno"> 3130</span>&#160;                    RtlQueryRegistryValues(RTL_REGISTRY_HANDLE,</div>
<div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>&#160;                                           (PWSTR)hk2Registry,</div>
<div class="line"><a name="l03132"></a><span class="lineno"> 3132</span>&#160;                                           &amp;AttachedQueryTable[0],</div>
<div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>&#160;                                           NULL,</div>
<div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>&#160;                                           NULL);</div>
<div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>&#160; </div>
<div class="line"><a name="l03136"></a><span class="lineno"> 3136</span>&#160;                    ZwClose(hk2Registry);</div>
<div class="line"><a name="l03137"></a><span class="lineno"> 3137</span>&#160; </div>
<div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>&#160;                } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l03139"></a><span class="lineno"> 3139</span>&#160; </div>
<div class="line"><a name="l03140"></a><span class="lineno"> 3140</span>&#160;                    RtlQueryRegistryValues(RTL_REGISTRY_HANDLE,</div>
<div class="line"><a name="l03141"></a><span class="lineno"> 3141</span>&#160;                                           (PWSTR)hkRegistry,</div>
<div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>&#160;                                           &amp;AttachedQueryTable[0],</div>
<div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>&#160;                                           NULL,</div>
<div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>&#160;                                           NULL);</div>
<div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>&#160;                }</div>
<div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>&#160; </div>
<div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>&#160;                TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDriver: Display driver is %sprimary on the desktop\n&quot;</span>,</div>
<div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>&#160;                            primary ? <span class="stringliteral">&quot;&quot;</span> : <span class="stringliteral">&quot;NOT &quot;</span>));</div>
<div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>&#160;                TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDriver: Display driver is %sattached to the desktop\n&quot;</span>,</div>
<div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>&#160;                            attached ? <span class="stringliteral">&quot;&quot;</span> : <span class="stringliteral">&quot;NOT &quot;</span>));</div>
<div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>&#160; </div>
<div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>&#160;                <span class="keywordflow">if</span> (attached) {</div>
<div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>&#160;                    TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDriver: Display driver is center positioned at %d, %d\n&quot;</span>,</div>
<div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>&#160;                                localDispInfo[i].<a class="code" href="a00020.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.left,</div>
<div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>&#160;                                localDispInfo[i].<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.top));</div>
<div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>&#160;                }</div>
<div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>&#160;            }</div>
<div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>&#160; </div>
<div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>&#160;<span class="comment">             * Open the kernel driver if we need it for the display driver</span></div>
<div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>&#160;<span class="comment">             * or for the VGA support.</span></div>
<div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>&#160;<span class="comment">             * Open it shared so we can still create other desktops on</span></div>
<div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>&#160;<span class="comment">             * the device.</span></div>
<div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>&#160; </div>
<div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>&#160;            RtlInitUnicodeString(&amp;UnicodeString, <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].szNtDeviceName);</div>
<div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>&#160; </div>
<div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>&#160;            pphysinfo = <a class="code" href="a00665.html#a291aca25f546e197608f39e4887001a9">UserGetDeviceFromName</a>(&amp;UnicodeString, USER_DEVICE_SHARED);</div>
<div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>&#160; </div>
<div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>&#160;<span class="comment">             * If there is an error opening the kernel driver, go to the next</span></div>
<div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>&#160;<span class="comment">             * driver.</span></div>
<div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>&#160;            <span class="keywordflow">if</span> (pphysinfo == NULL) {</div>
<div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>&#160;                <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>, <span class="stringliteral">&quot;UserInit: LoadDriver: Error opening kernel video driver&quot;</span>);</div>
<div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>&#160;                <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>&#160;            }</div>
<div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>&#160; </div>
<div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>&#160;            <span class="keywordflow">if</span> (pphysinfo != &amp;(<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i])) {</div>
<div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>&#160;                <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;UserInit: LoadDriver: Inconsistent pphysinfo\n&quot;</span>);</div>
<div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>&#160;            }</div>
<div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>&#160; </div>
<div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>&#160; </div>
<div class="line"><a name="l03184"></a><span class="lineno"> 3184</span>&#160; </div>
<div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>&#160;<span class="comment">             * If the vgaCompatible display is not installed, check this one.</span></div>
<div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>&#160;<span class="comment">             * If it is the vgacompatible driver, set the installed flag to</span></div>
<div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>&#160;<span class="comment">             * TRUE and save the info in the zeroth entry - reserved for VGA.</span></div>
<div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>&#160;<span class="preprocessor">#if defined (_X86_)</span></div>
<div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>&#160; </div>
<div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>&#160;            <span class="keywordflow">if</span> ((vgaInstalled == FALSE) &amp;&amp;</div>
<div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>&#160;                (<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].stateFlags &amp; <a class="code" href="a00665.html#a2ccdbdde9498b06c48c5eca065b9a1fd">DISPLAY_DEVICE_VGA_COMPATIBLE</a>)) {</div>
<div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>&#160;            <span class="keywordflow">if</span> (0) {</div>
<div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>&#160;                VIDEO_NUM_MODES NumModes;</div>
<div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>&#160;                ULONG           NumModesLength = <span class="keyword">sizeof</span>(NumModes);</div>
<div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>&#160;                ULONG           cbBuffer;</div>
<div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>&#160;                ULONG           BytesReturned;</div>
<div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>&#160; </div>
<div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>&#160;                PVIDEO_MODE_INFORMATION lpModes;</div>
<div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>&#160;                PVIDEO_MODE_INFORMATION pVideoModeSave;</div>
<div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>&#160; </div>
<div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>&#160;                ULONG      cbdevmodeInfo = 0;</div>
<div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>&#160;                LPDEVMODEW pDevmode;</div>
<div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>&#160;                LPDEVMODEW pDevmodeSave;</div>
<div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>&#160; </div>
<div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>&#160;<span class="comment">                 * Build the list of text modes for this device</span></div>
<div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>&#160;                TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDriver: get text modes\n&quot;</span>));</div>
<div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>&#160; </div>
<div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>&#160;                Status = GreDeviceIoControl(<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].pDeviceHandle,</div>
<div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>&#160;                                            IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES,</div>
<div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>&#160;                                            NULL,</div>
<div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>&#160;                                            0,</div>
<div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>&#160;                                            &amp;NumModes,</div>
<div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>&#160;                                            NumModesLength,</div>
<div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>&#160;                                            &amp;BytesReturned);</div>
<div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>&#160; </div>
<div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>&#160;                cbBuffer = NumModes.NumModes * NumModes.ModeInformationLength;</div>
<div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>&#160; </div>
<div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>&#160;                <span class="keywordflow">if</span> ( (NT_SUCCESS(Status)) &amp;&amp;</div>
<div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>&#160;                     (lpModes = (PVIDEO_MODE_INFORMATION)</div>
<div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>&#160;                          UserAllocPool(cbBuffer, TAG_SYSTEM)) )</div>
<div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>&#160;                {</div>
<div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>&#160;                    Status = GreDeviceIoControl(<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].pDeviceHandle,</div>
<div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>&#160;                                                IOCTL_VIDEO_QUERY_AVAIL_MODES,</div>
<div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>&#160;                                                NULL,</div>
<div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>&#160;                                                0,</div>
<div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>&#160;                                                lpModes,</div>
<div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>&#160;                                                cbBuffer,</div>
<div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>&#160;                                                &amp;BytesReturned);</div>
<div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>&#160; </div>
<div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>&#160;                    pVideoModeSave = lpModes;</div>
<div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>&#160; </div>
<div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>&#160;<span class="comment">                     * We will not support mode than three text modes.</span></div>
<div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>&#160;<span class="comment">                     * So just allocate enough for that.</span></div>
<div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>&#160;                    <span class="keywordflow">if</span> ((NT_SUCCESS(Status)) &amp;&amp;</div>
<div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>&#160;                        (pDevmode = (LPDEVMODEW)</div>
<div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>&#160;                              UserAllocPool(3 * <span class="keyword">sizeof</span>(DEVMODEW), TAG_SYSTEM))) {</div>
<div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>&#160; </div>
<div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>&#160;                        pDevmodeSave = pDevmode;</div>
<div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>&#160; </div>
<div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>&#160;                        memset(pDevmode, 0, 3 * <span class="keyword">sizeof</span>(DEVMODEW));</div>
<div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>&#160; </div>
<div class="line"><a name="l03255"></a><span class="lineno"> 3255</span>&#160;                        TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDriver: parsing text modes\n&quot;</span>));</div>
<div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>&#160; </div>
<div class="line"><a name="l03257"></a><span class="lineno"> 3257</span>&#160;                        <span class="keywordflow">while</span> (cbBuffer != 0) {</div>
<div class="line"><a name="l03258"></a><span class="lineno"> 3258</span>&#160; </div>
<div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>&#160;                            <span class="keywordflow">if</span> ((lpModes-&gt;AttributeFlags &amp; VIDEO_MODE_COLOR) &amp;&amp;</div>
<div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>&#160;                                (!(lpModes-&gt;AttributeFlags &amp; VIDEO_MODE_GRAPHICS)))</div>
<div class="line"><a name="l03261"></a><span class="lineno"> 3261</span>&#160;                            {</div>
<div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>&#160; </div>
<div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>&#160;                                <span class="comment">/*</span></div>
<div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>&#160;<span class="comment">                                 * Make sure we have no more than 3 text modes</span></div>
<div class="line"><a name="l03265"></a><span class="lineno"> 3265</span>&#160;<span class="comment">                                 */</span></div>
<div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>&#160;                                <span class="keywordflow">if</span> (cbdevmodeInfo == 3 * <span class="keyword">sizeof</span>(DEVMODEW)) {</div>
<div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>&#160;                                    <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;UserInit: VGA compatible device has too many text modes\n&quot;</span>);</div>
<div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>&#160;                                    <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>&#160;                                }</div>
<div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>&#160; </div>
<div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>&#160;                                RtlZeroMemory(pDevmode, <span class="keyword">sizeof</span>(DEVMODEW));</div>
<div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>&#160; </div>
<div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>&#160;                                memcpy(pDevmode-&gt;dmDeviceName,</div>
<div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>&#160;                                       L<span class="stringliteral">&quot;FULLSCREEN CONSOLE&quot;</span>,</div>
<div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>&#160;                                       <span class="keyword">sizeof</span>(L<span class="stringliteral">&quot;FULLSCREEN CONSOLE&quot;</span>));</div>
<div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>&#160; </div>
<div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>&#160;                                pDevmode-&gt;dmSize = <span class="keyword">sizeof</span>(DEVMODEW);</div>
<div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>&#160;                                pDevmode-&gt;dmSpecVersion = DM_SPECVERSION;</div>
<div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>&#160;                                pDevmode-&gt;dmDriverVersion = DM_SPECVERSION;</div>
<div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>&#160;                                pDevmode-&gt;dmDisplayFlags = DMDISPLAYFLAGS_TEXTMODE;</div>
<div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>&#160; </div>
<div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>&#160;                                pDevmode-&gt;dmPelsWidth =</div>
<div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>&#160;                                    lpModes-&gt;VisScreenWidth;</div>
<div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>&#160;                                pDevmode-&gt;dmPelsHeight =</div>
<div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>&#160;                                    lpModes-&gt;VisScreenHeight;</div>
<div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>&#160;                                pDevmode-&gt;dmBitsPerPel =</div>
<div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>&#160;                                    lpModes-&gt;NumberOfPlanes *</div>
<div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>&#160;                                    lpModes-&gt;BitsPerPlane;</div>
<div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>&#160; </div>
<div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>&#160;                                pDevmode-&gt;dmFields = DM_BITSPERPEL       |</div>
<div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>&#160;                                                     DM_PELSWIDTH        |</div>
<div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>&#160;                                                     DM_PELSHEIGHT       |</div>
<div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>&#160;                                                     DM_DISPLAYFLAGS     ;</div>
<div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>&#160; </div>
<div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>&#160;                                <span class="comment">/*</span></div>
<div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>&#160;<span class="comment">                                 * NOTE !!!</span></div>
<div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>&#160;<span class="comment">                                 * As a hack, lets store the mode number in</span></div>
<div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>&#160;<span class="comment">                                 * a field we don&#39;t use</span></div>
<div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>&#160;<span class="comment">                                 */</span></div>
<div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>&#160;                                pDevmode-&gt;dmOrientation =</div>
<div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>&#160;                                    (USHORT) lpModes-&gt;ModeIndex;</div>
<div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>&#160; </div>
<div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>&#160;                                cbdevmodeInfo += <span class="keyword">sizeof</span>(DEVMODEW);</div>
<div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>&#160;                                pDevmode += 1;</div>
<div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>&#160; </div>
<div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>&#160;                            }</div>
<div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>&#160; </div>
<div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>&#160;                            cbBuffer -= NumModes.ModeInformationLength;</div>
<div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>&#160; </div>
<div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>&#160;                            lpModes = (PVIDEO_MODE_INFORMATION)</div>
<div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>&#160;                                (((PUCHAR)lpModes) + NumModes.ModeInformationLength);</div>
<div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>&#160;                        }</div>
<div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>&#160;                    }</div>
<div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>&#160; </div>
<div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>&#160;                    UserFreePool(pVideoModeSave);</div>
<div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>&#160;                }</div>
<div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>&#160; </div>
<div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>&#160;<span class="comment">                 * if everything went OK with that, then we can save this</span></div>
<div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>&#160;<span class="comment">                 * device as vga compatible !</span></div>
<div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>&#160;<span class="comment">                 *</span></div>
<div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>&#160;<span class="comment">                 * If no modes are available, do not setup this device.</span></div>
<div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>&#160;<span class="comment">                 * Otherwise, EnumDisplaySettings will end up trying to get</span></div>
<div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>&#160;<span class="comment">                 * the list of modes for this device, which it can not do.</span></div>
<div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>&#160; </div>
<div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>&#160;                <span class="keywordflow">if</span> (cbdevmodeInfo) {</div>
<div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>&#160; </div>
<div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>&#160;                    vgaInstalled = TRUE;</div>
<div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>&#160; </div>
<div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>&#160;                    TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDriver: saving VGA compatible device\n&quot;</span>));</div>
<div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>&#160; </div>
<div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>&#160;<span class="comment">                     * Copy the string and the handle ...</span></div>
<div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>&#160;                    RtlCopyMemory(<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[0].szNtDeviceName,</div>
<div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>&#160;                                  <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].szNtDeviceName,</div>
<div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>&#160;                                  <span class="keyword">sizeof</span>(<a class="code" href="a02601.html">PHYSICAL_DEV_INFO</a>));</div>
<div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>&#160; </div>
<div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>&#160;                    <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[0].<a class="code" href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">cbdevmodeInfo</a> = cbdevmodeInfo;</div>
<div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>&#160;                    <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[0].<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a>   = pDevmodeSave;</div>
<div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>&#160; </div>
<div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>&#160;                    RtlWriteRegistryValue(RTL_REGISTRY_DEVICEMAP,</div>
<div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>&#160;                                          L<span class="stringliteral">&quot;Video&quot;</span>,</div>
<div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>&#160;                                          L<span class="stringliteral">&quot;VgaCompatible&quot;</span>,</div>
<div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>&#160;                                          REG_SZ,</div>
<div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>&#160;                                          UnicodeDeviceName.Buffer,</div>
<div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>&#160;                                          UnicodeDeviceName.Length +</div>
<div class="line"><a name="l03349"></a><span class="lineno"> 3349</span>&#160;                                              <span class="keyword">sizeof</span>(UNICODE_NULL));</div>
<div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>&#160; </div>
<div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>&#160;<span class="comment">                     * Mark this device as being used</span></div>
<div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>&#160;                    bKeepDevice = TRUE;</div>
<div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>&#160;                } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>&#160;                    <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a>, <span class="stringliteral">&quot;UserInit: VGA compatible device has NO text modes!\n&quot;</span>);</div>
<div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>&#160;                }</div>
<div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>&#160;            }</div>
<div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>&#160; </div>
<div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>&#160; </div>
<div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>&#160; </div>
<div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>&#160;<span class="comment">             * Try to open the display driver associated to the kernel driver.</span></div>
<div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>&#160;<span class="comment">             *</span></div>
<div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>&#160;<span class="comment">             * We want to do this if we are looking for an attached device (taking</span></div>
<div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>&#160;<span class="comment">             * into account mirror devices properly) or if we are just looking</span></div>
<div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>&#160;<span class="comment">             * for any device.</span></div>
<div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>&#160; </div>
<div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>&#160;            <span class="keywordflow">if</span> ( (bCheckForAttached &amp;&amp;</div>
<div class="line"><a name="l03376"></a><span class="lineno"> 3376</span>&#160;                  attached &amp;&amp;</div>
<div class="line"><a name="l03377"></a><span class="lineno"> 3377</span>&#160;                  (  (bAttachMirroring &amp;&amp;</div>
<div class="line"><a name="l03378"></a><span class="lineno"> 3378</span>&#160;                      (<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].stateFlags &amp;</div>
<div class="line"><a name="l03379"></a><span class="lineno"> 3379</span>&#160;                       DISPLAY_DEVICE_MIRRORING_DRIVER))</div>
<div class="line"><a name="l03380"></a><span class="lineno"> 3380</span>&#160; </div>
<div class="line"><a name="l03381"></a><span class="lineno"> 3381</span>&#160;                     ||</div>
<div class="line"><a name="l03382"></a><span class="lineno"> 3382</span>&#160; </div>
<div class="line"><a name="l03383"></a><span class="lineno"> 3383</span>&#160;                     (!bAttachMirroring &amp;&amp;</div>
<div class="line"><a name="l03384"></a><span class="lineno"> 3384</span>&#160;                      !(<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].stateFlags &amp;</div>
<div class="line"><a name="l03385"></a><span class="lineno"> 3385</span>&#160;                        DISPLAY_DEVICE_MIRRORING_DRIVER))</div>
<div class="line"><a name="l03386"></a><span class="lineno"> 3386</span>&#160;                  )</div>
<div class="line"><a name="l03387"></a><span class="lineno"> 3387</span>&#160;                 )</div>
<div class="line"><a name="l03388"></a><span class="lineno"> 3388</span>&#160; </div>
<div class="line"><a name="l03389"></a><span class="lineno"> 3389</span>&#160;                 ||</div>
<div class="line"><a name="l03390"></a><span class="lineno"> 3390</span>&#160; </div>
<div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>&#160;                 (!bCheckForAttached &amp;&amp; !displayInstalled)) {</div>
<div class="line"><a name="l03392"></a><span class="lineno"> 3392</span>&#160; </div>
<div class="line"><a name="l03393"></a><span class="lineno"> 3393</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>&#160;<span class="comment">                 * We will try to load the driver using the information in the</span></div>
<div class="line"><a name="l03395"></a><span class="lineno"> 3395</span>&#160;<span class="comment">                 * registry.  If it matches perfectly with a mode from the driver -</span></div>
<div class="line"><a name="l03396"></a><span class="lineno"> 3396</span>&#160;<span class="comment">                 * great.  If it&#39;s a loose match, the we just give a warning.</span></div>
<div class="line"><a name="l03397"></a><span class="lineno"> 3397</span>&#160;<span class="comment">                 *</span></div>
<div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>&#160;<span class="comment">                 * If that does nto work, we will want to try the first mode</span></div>
<div class="line"><a name="l03399"></a><span class="lineno"> 3399</span>&#160;<span class="comment">                 * in the list - which we get by matching with 0,0,0</span></div>
<div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>&#160;<span class="comment">                 *</span></div>
<div class="line"><a name="l03401"></a><span class="lineno"> 3401</span>&#160;<span class="comment">                 * If that also fails, we want to boot with the default DEVMODE</span></div>
<div class="line"><a name="l03402"></a><span class="lineno"> 3402</span>&#160;<span class="comment">                 * that we pass to the driver.</span></div>
<div class="line"><a name="l03403"></a><span class="lineno"> 3403</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l03404"></a><span class="lineno"> 3404</span>&#160; </div>
<div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>&#160;                <span class="keywordflow">if</span> (<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].stateFlags &amp; DISPLAY_DEVICE_MIRRORING_DRIVER) {</div>
<div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>&#160; </div>
<div class="line"><a name="l03407"></a><span class="lineno"> 3407</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l03408"></a><span class="lineno"> 3408</span>&#160;<span class="comment">                     * In the case of mirroring, we want to use the same</span></div>
<div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>&#160;<span class="comment">                     * DEVMODE as was provided for the main display.  We also</span></div>
<div class="line"><a name="l03410"></a><span class="lineno"> 3410</span>&#160;<span class="comment">                     * want to make sure we do it after the proper displays</span></div>
<div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>&#160;<span class="comment">                     * have been loaded.</span></div>
<div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>&#160; </div>
<div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>&#160;<span class="comment">                     * If we have no primary at this point, we are in trouble !</span></div>
<div class="line"><a name="l03416"></a><span class="lineno"> 3416</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>&#160;                    <span class="keywordflow">if</span> (mdevPrimary == (ULONG) -1) {</div>
<div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>&#160;                        <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(mdevPrimary != (ULONG) -1);</div>
<div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>&#160;                        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>&#160;                    }</div>
<div class="line"><a name="l03421"></a><span class="lineno"> 3421</span>&#160; </div>
<div class="line"><a name="l03422"></a><span class="lineno"> 3422</span>&#160;                    pdevmodeInformation = &amp;sourceDevmodeInformation;</div>
<div class="line"><a name="l03423"></a><span class="lineno"> 3423</span>&#160; </div>
<div class="line"><a name="l03424"></a><span class="lineno"> 3424</span>&#160;                    RtlCopyMemory(&amp;sourceDevmodeInformation,</div>
<div class="line"><a name="l03425"></a><span class="lineno"> 3425</span>&#160;                                  <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[mdevPrimary].pCurrentDevmode,</div>
<div class="line"><a name="l03426"></a><span class="lineno"> 3426</span>&#160;                                  <span class="keyword">sizeof</span>(DEVMODEW));</div>
<div class="line"><a name="l03427"></a><span class="lineno"> 3427</span>&#160; </div>
<div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>&#160;                    Status = STATUS_SUCCESS;</div>
<div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>&#160; </div>
<div class="line"><a name="l03430"></a><span class="lineno"> 3430</span>&#160;                } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l03431"></a><span class="lineno"> 3431</span>&#160; </div>
<div class="line"><a name="l03432"></a><span class="lineno"> 3432</span>&#160;                    RtlZeroMemory(&amp;sourceDevmodeInformation, <span class="keyword">sizeof</span>(DEVMODEW));</div>
<div class="line"><a name="l03433"></a><span class="lineno"> 3433</span>&#160;                    sourceDevmodeInformation.dmSize = <span class="keyword">sizeof</span>(DEVMODEW);</div>
<div class="line"><a name="l03434"></a><span class="lineno"> 3434</span>&#160; </div>
<div class="line"><a name="l03435"></a><span class="lineno"> 3435</span>&#160;                    Status = <a class="code" href="a00665.html#a7f72492be72deb72088a46321f3703e9">ProbeAndCaptureDevmode</a>(&amp;UnicodeDeviceName,</div>
<div class="line"><a name="l03436"></a><span class="lineno"> 3436</span>&#160;                                                    &amp;pdevmodeInformation,</div>
<div class="line"><a name="l03437"></a><span class="lineno"> 3437</span>&#160;                                                    &amp;sourceDevmodeInformation,</div>
<div class="line"><a name="l03438"></a><span class="lineno"> 3438</span>&#160;                                                    TRUE);</div>
<div class="line"><a name="l03439"></a><span class="lineno"> 3439</span>&#160;                }</div>
<div class="line"><a name="l03440"></a><span class="lineno"> 3440</span>&#160; </div>
<div class="line"><a name="l03441"></a><span class="lineno"> 3441</span>&#160;                <span class="keywordflow">if</span> (NT_SUCCESS(Status)) {</div>
<div class="line"><a name="l03442"></a><span class="lineno"> 3442</span>&#160; </div>
<div class="line"><a name="l03443"></a><span class="lineno"> 3443</span>&#160;                    <span class="keywordflow">if</span> (Status == STATUS_RECEIVE_PARTIAL) {</div>
<div class="line"><a name="l03444"></a><span class="lineno"> 3444</span>&#160; </div>
<div class="line"><a name="l03445"></a><span class="lineno"> 3445</span>&#160;                        <a class="code" href="a00665.html#aa8b64103d379d1cc9e91a96db783aa63">UserLogDisplayDriverEvent</a>(MsgInvalidDisplayMode);</div>
<div class="line"><a name="l03446"></a><span class="lineno"> 3446</span>&#160;                    }</div>
<div class="line"><a name="l03447"></a><span class="lineno"> 3447</span>&#160; </div>
<div class="line"><a name="l03448"></a><span class="lineno"> 3448</span>&#160;                    localDispInfo[i].<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a> = <a class="code" href="a00665.html#a64f37a06db6b3bcaf0b9bb15887675e6">UserLoadDisplayDriver</a>(&amp;<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i],</div>
<div class="line"><a name="l03449"></a><span class="lineno"> 3449</span>&#160;                                                                  &amp;UnicodeDeviceName,</div>
<div class="line"><a name="l03450"></a><span class="lineno"> 3450</span>&#160;                                                                  &amp;<a class="code" href="a03257.html#a9744bfca19a1b2f747cb8816a7685cd8">strDisplayDriver</a>,</div>
<div class="line"><a name="l03451"></a><span class="lineno"> 3451</span>&#160;                                                                  pdevmodeInformation,</div>
<div class="line"><a name="l03452"></a><span class="lineno"> 3452</span>&#160;                                                                  <span class="comment">// BUGBUG TRUE or FALSE for multi ?</span></div>
<div class="line"><a name="l03453"></a><span class="lineno"> 3453</span>&#160;                                                                  TRUE,</div>
<div class="line"><a name="l03454"></a><span class="lineno"> 3454</span>&#160;                                                                  TRUE,</div>
<div class="line"><a name="l03455"></a><span class="lineno"> 3455</span>&#160;                                                                  (PDEVICE_LOCK *)&amp;localDispInfo[i].pDevLock);</div>
<div class="line"><a name="l03456"></a><span class="lineno"> 3456</span>&#160;                }</div>
<div class="line"><a name="l03457"></a><span class="lineno"> 3457</span>&#160; </div>
<div class="line"><a name="l03458"></a><span class="lineno"> 3458</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l03459"></a><span class="lineno"> 3459</span>&#160;<span class="comment">                 * We failed to load a display driver with this devmode.</span></div>
<div class="line"><a name="l03460"></a><span class="lineno"> 3460</span>&#160;<span class="comment">                 * Try to pick the first valid Devmode.</span></div>
<div class="line"><a name="l03461"></a><span class="lineno"> 3461</span>&#160;<span class="comment">                 *</span></div>
<div class="line"><a name="l03462"></a><span class="lineno"> 3462</span>&#160;<span class="comment">                 * The trick to do this is to turn on BaseVideo temporarily.</span></div>
<div class="line"><a name="l03463"></a><span class="lineno"> 3463</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l03464"></a><span class="lineno"> 3464</span>&#160; </div>
<div class="line"><a name="l03465"></a><span class="lineno"> 3465</span>&#160;                <span class="keywordflow">if</span> (!localDispInfo[i].hDev) {</div>
<div class="line"><a name="l03466"></a><span class="lineno"> 3466</span>&#160; </div>
<div class="line"><a name="l03467"></a><span class="lineno"> 3467</span>&#160;                    <a class="code" href="a00665.html#aa8b64103d379d1cc9e91a96db783aa63">UserLogDisplayDriverEvent</a>(MsgInvalidDisplayMode);</div>
<div class="line"><a name="l03468"></a><span class="lineno"> 3468</span>&#160; </div>
<div class="line"><a name="l03469"></a><span class="lineno"> 3469</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l03470"></a><span class="lineno"> 3470</span>&#160;<span class="comment">                     * Free memory allocated by ProbeAndCaptureDevmode</span></div>
<div class="line"><a name="l03471"></a><span class="lineno"> 3471</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l03472"></a><span class="lineno"> 3472</span>&#160; </div>
<div class="line"><a name="l03473"></a><span class="lineno"> 3473</span>&#160;                    <span class="keywordflow">if</span> (pdevmodeInformation) {</div>
<div class="line"><a name="l03474"></a><span class="lineno"> 3474</span>&#160; </div>
<div class="line"><a name="l03475"></a><span class="lineno"> 3475</span>&#160;                        <span class="comment">/*</span></div>
<div class="line"><a name="l03476"></a><span class="lineno"> 3476</span>&#160;<span class="comment">                         * Log an error saying the selected color or</span></div>
<div class="line"><a name="l03477"></a><span class="lineno"> 3477</span>&#160;<span class="comment">                         * resolution is invalid.</span></div>
<div class="line"><a name="l03478"></a><span class="lineno"> 3478</span>&#160;<span class="comment">                         */</span></div>
<div class="line"><a name="l03479"></a><span class="lineno"> 3479</span>&#160;                        <span class="keywordflow">if</span> (pdevmodeInformation-&gt;dmBitsPerPel == 0x4) {</div>
<div class="line"><a name="l03480"></a><span class="lineno"> 3480</span>&#160; </div>
<div class="line"><a name="l03481"></a><span class="lineno"> 3481</span>&#160;                            <a class="code" href="a00665.html#aa8b64103d379d1cc9e91a96db783aa63">UserLogDisplayDriverEvent</a>(MsgInvalidDisplay16Colors);</div>
<div class="line"><a name="l03482"></a><span class="lineno"> 3482</span>&#160;                        }</div>
<div class="line"><a name="l03483"></a><span class="lineno"> 3483</span>&#160; </div>
<div class="line"><a name="l03484"></a><span class="lineno"> 3484</span>&#160; </div>
<div class="line"><a name="l03485"></a><span class="lineno"> 3485</span>&#160;                        <span class="keywordflow">if</span> (pdevmodeInformation != &amp;sourceDevmodeInformation) {</div>
<div class="line"><a name="l03486"></a><span class="lineno"> 3486</span>&#160; </div>
<div class="line"><a name="l03487"></a><span class="lineno"> 3487</span>&#160;                            UserFreePool(pdevmodeInformation);</div>
<div class="line"><a name="l03488"></a><span class="lineno"> 3488</span>&#160;                            pdevmodeInformation = NULL;</div>
<div class="line"><a name="l03489"></a><span class="lineno"> 3489</span>&#160;                        }</div>
<div class="line"><a name="l03490"></a><span class="lineno"> 3490</span>&#160;                    }</div>
<div class="line"><a name="l03491"></a><span class="lineno"> 3491</span>&#160; </div>
<div class="line"><a name="l03492"></a><span class="lineno"> 3492</span>&#160;                    TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDriver: Trying first DEVMODE\n&quot;</span>));</div>
<div class="line"><a name="l03493"></a><span class="lineno"> 3493</span>&#160; </div>
<div class="line"><a name="l03494"></a><span class="lineno"> 3494</span>&#160;                    RtlZeroMemory(&amp;sourceDevmodeInformation, <span class="keyword">sizeof</span>(DEVMODEW));</div>
<div class="line"><a name="l03495"></a><span class="lineno"> 3495</span>&#160;                    sourceDevmodeInformation.dmSize = <span class="keyword">sizeof</span>(DEVMODEW);</div>
<div class="line"><a name="l03496"></a><span class="lineno"> 3496</span>&#160; </div>
<div class="line"><a name="l03497"></a><span class="lineno"> 3497</span>&#160;                    gbBaseVideoold = <a class="code" href="a00665.html#a4f95d12ae9db57753d1ce7447479f0ee">gbBaseVideo</a>;</div>
<div class="line"><a name="l03498"></a><span class="lineno"> 3498</span>&#160;                    <a class="code" href="a00665.html#a4f95d12ae9db57753d1ce7447479f0ee">gbBaseVideo</a> = TRUE;</div>
<div class="line"><a name="l03499"></a><span class="lineno"> 3499</span>&#160; </div>
<div class="line"><a name="l03500"></a><span class="lineno"> 3500</span>&#160;                    <span class="keywordflow">if</span> (<a class="code" href="a00665.html#a7f72492be72deb72088a46321f3703e9">ProbeAndCaptureDevmode</a>(&amp;UnicodeDeviceName,</div>
<div class="line"><a name="l03501"></a><span class="lineno"> 3501</span>&#160;                                               &amp;pdevmodeInformation,</div>
<div class="line"><a name="l03502"></a><span class="lineno"> 3502</span>&#160;                                               &amp;sourceDevmodeInformation,</div>
<div class="line"><a name="l03503"></a><span class="lineno"> 3503</span>&#160;                                               TRUE))</div>
<div class="line"><a name="l03504"></a><span class="lineno"> 3504</span>&#160;                    {</div>
<div class="line"><a name="l03505"></a><span class="lineno"> 3505</span>&#160;                        <a class="code" href="a00665.html#a4f95d12ae9db57753d1ce7447479f0ee">gbBaseVideo</a> = gbBaseVideoold;</div>
<div class="line"><a name="l03506"></a><span class="lineno"> 3506</span>&#160; </div>
<div class="line"><a name="l03507"></a><span class="lineno"> 3507</span>&#160;                        localDispInfo[i].<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a> = <a class="code" href="a00665.html#a64f37a06db6b3bcaf0b9bb15887675e6">UserLoadDisplayDriver</a>(&amp;<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i],</div>
<div class="line"><a name="l03508"></a><span class="lineno"> 3508</span>&#160;                                                                      &amp;UnicodeDeviceName,</div>
<div class="line"><a name="l03509"></a><span class="lineno"> 3509</span>&#160;                                                                      &amp;<a class="code" href="a03257.html#a9744bfca19a1b2f747cb8816a7685cd8">strDisplayDriver</a>,</div>
<div class="line"><a name="l03510"></a><span class="lineno"> 3510</span>&#160;                                                                      pdevmodeInformation,</div>
<div class="line"><a name="l03511"></a><span class="lineno"> 3511</span>&#160;                                                                      TRUE,</div>
<div class="line"><a name="l03512"></a><span class="lineno"> 3512</span>&#160;                                                                      TRUE,</div>
<div class="line"><a name="l03513"></a><span class="lineno"> 3513</span>&#160;                                                                      (PDEVICE_LOCK *)&amp;localDispInfo[i].pDevLock);</div>
<div class="line"><a name="l03514"></a><span class="lineno"> 3514</span>&#160;                    }</div>
<div class="line"><a name="l03515"></a><span class="lineno"> 3515</span>&#160; </div>
<div class="line"><a name="l03516"></a><span class="lineno"> 3516</span>&#160;                    <a class="code" href="a00665.html#a4f95d12ae9db57753d1ce7447479f0ee">gbBaseVideo</a> = gbBaseVideoold;</div>
<div class="line"><a name="l03517"></a><span class="lineno"> 3517</span>&#160;                }</div>
<div class="line"><a name="l03518"></a><span class="lineno"> 3518</span>&#160; </div>
<div class="line"><a name="l03519"></a><span class="lineno"> 3519</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l03520"></a><span class="lineno"> 3520</span>&#160;<span class="comment">                 * We failed everything - try the NULL DEVMODE which should always</span></div>
<div class="line"><a name="l03521"></a><span class="lineno"> 3521</span>&#160;<span class="comment">                 * work.</span></div>
<div class="line"><a name="l03522"></a><span class="lineno"> 3522</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l03523"></a><span class="lineno"> 3523</span>&#160; </div>
<div class="line"><a name="l03524"></a><span class="lineno"> 3524</span>&#160;                <span class="keywordflow">if</span> (!localDispInfo[i].hDev) {</div>
<div class="line"><a name="l03525"></a><span class="lineno"> 3525</span>&#160; </div>
<div class="line"><a name="l03526"></a><span class="lineno"> 3526</span>&#160;                    <span class="keywordflow">if</span> (pdevmodeInformation &amp;&amp;</div>
<div class="line"><a name="l03527"></a><span class="lineno"> 3527</span>&#160;                        (pdevmodeInformation != &amp;sourceDevmodeInformation)) {</div>
<div class="line"><a name="l03528"></a><span class="lineno"> 3528</span>&#160; </div>
<div class="line"><a name="l03529"></a><span class="lineno"> 3529</span>&#160;                        UserFreePool(pdevmodeInformation);</div>
<div class="line"><a name="l03530"></a><span class="lineno"> 3530</span>&#160;                        pdevmodeInformation = NULL;</div>
<div class="line"><a name="l03531"></a><span class="lineno"> 3531</span>&#160;                    }</div>
<div class="line"><a name="l03532"></a><span class="lineno"> 3532</span>&#160; </div>
<div class="line"><a name="l03533"></a><span class="lineno"> 3533</span>&#160;                    TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDriver: Trying default DEVMODE\n&quot;</span>));</div>
<div class="line"><a name="l03534"></a><span class="lineno"> 3534</span>&#160; </div>
<div class="line"><a name="l03535"></a><span class="lineno"> 3535</span>&#160;                    RtlZeroMemory(&amp;sourceDevmodeInformation, <span class="keyword">sizeof</span>(DEVMODEW));</div>
<div class="line"><a name="l03536"></a><span class="lineno"> 3536</span>&#160;                    sourceDevmodeInformation.dmSize = 0xDDDD;</div>
<div class="line"><a name="l03537"></a><span class="lineno"> 3537</span>&#160;                    pdevmodeInformation = &amp;sourceDevmodeInformation;</div>
<div class="line"><a name="l03538"></a><span class="lineno"> 3538</span>&#160; </div>
<div class="line"><a name="l03539"></a><span class="lineno"> 3539</span>&#160;                    <span class="keywordflow">if</span> (NT_SUCCESS(<a class="code" href="a00665.html#a1496fe4e3afa850f6bd625b0c3542b78">UserGetDisplayDriverParameters</a>(&amp;UnicodeDeviceName,</div>
<div class="line"><a name="l03540"></a><span class="lineno"> 3540</span>&#160;                                                                  &amp;sourceDevmodeInformation,</div>
<div class="line"><a name="l03541"></a><span class="lineno"> 3541</span>&#160;                                                                  TRUE))) {</div>
<div class="line"><a name="l03542"></a><span class="lineno"> 3542</span>&#160; </div>
<div class="line"><a name="l03543"></a><span class="lineno"> 3543</span>&#160;                        localDispInfo[i].<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a> = <a class="code" href="a00665.html#a64f37a06db6b3bcaf0b9bb15887675e6">UserLoadDisplayDriver</a>(&amp;<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i],</div>
<div class="line"><a name="l03544"></a><span class="lineno"> 3544</span>&#160;                                                                      &amp;UnicodeDeviceName,</div>
<div class="line"><a name="l03545"></a><span class="lineno"> 3545</span>&#160;                                                                      &amp;<a class="code" href="a03257.html#a9744bfca19a1b2f747cb8816a7685cd8">strDisplayDriver</a>,</div>
<div class="line"><a name="l03546"></a><span class="lineno"> 3546</span>&#160;                                                                      pdevmodeInformation,</div>
<div class="line"><a name="l03547"></a><span class="lineno"> 3547</span>&#160;                                                                      TRUE,</div>
<div class="line"><a name="l03548"></a><span class="lineno"> 3548</span>&#160;                                                                      TRUE,</div>
<div class="line"><a name="l03549"></a><span class="lineno"> 3549</span>&#160;                                                                      (PDEVICE_LOCK *)&amp;localDispInfo[i].pDevLock);</div>
<div class="line"><a name="l03550"></a><span class="lineno"> 3550</span>&#160;                    }</div>
<div class="line"><a name="l03551"></a><span class="lineno"> 3551</span>&#160;                }</div>
<div class="line"><a name="l03552"></a><span class="lineno"> 3552</span>&#160; </div>
<div class="line"><a name="l03553"></a><span class="lineno"> 3553</span>&#160;                <span class="keywordflow">if</span> (localDispInfo[i].hDev) {</div>
<div class="line"><a name="l03554"></a><span class="lineno"> 3554</span>&#160; </div>
<div class="line"><a name="l03555"></a><span class="lineno"> 3555</span>&#160;                    TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDriver: Display Driver Loaded successfully\n&quot;</span>));</div>
<div class="line"><a name="l03556"></a><span class="lineno"> 3556</span>&#160; </div>
<div class="line"><a name="l03557"></a><span class="lineno"> 3557</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l03558"></a><span class="lineno"> 3558</span>&#160;<span class="comment">                     * We installed a display driver successfully, so we</span></div>
<div class="line"><a name="l03559"></a><span class="lineno"> 3559</span>&#160;<span class="comment">                     * know to exit out of the loop successfully.</span></div>
<div class="line"><a name="l03560"></a><span class="lineno"> 3560</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l03561"></a><span class="lineno"> 3561</span>&#160;                    displayInstalled = TRUE;</div>
<div class="line"><a name="l03562"></a><span class="lineno"> 3562</span>&#160; </div>
<div class="line"><a name="l03563"></a><span class="lineno"> 3563</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l03564"></a><span class="lineno"> 3564</span>&#160;<span class="comment">                     * Mark this device as being used so we do not free it&#39;s</span></div>
<div class="line"><a name="l03565"></a><span class="lineno"> 3565</span>&#160;<span class="comment">                     * handle.</span></div>
<div class="line"><a name="l03566"></a><span class="lineno"> 3566</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l03567"></a><span class="lineno"> 3567</span>&#160;                    bKeepDevice = TRUE;</div>
<div class="line"><a name="l03568"></a><span class="lineno"> 3568</span>&#160; </div>
<div class="line"><a name="l03569"></a><span class="lineno"> 3569</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l03570"></a><span class="lineno"> 3570</span>&#160;<span class="comment">                     * Mark this device as being part of the primary device</span></div>
<div class="line"><a name="l03571"></a><span class="lineno"> 3571</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l03572"></a><span class="lineno"> 3572</span>&#160;                    <span class="keywordflow">if</span> (attached)</div>
<div class="line"><a name="l03573"></a><span class="lineno"> 3573</span>&#160;                        <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].<a class="code" href="a02601.html#a65e861fd574d4b5dd70d500641b395e8">stateFlags</a> |= DISPLAY_DEVICE_ATTACHED_TO_DESKTOP;</div>
<div class="line"><a name="l03574"></a><span class="lineno"> 3574</span>&#160; </div>
<div class="line"><a name="l03575"></a><span class="lineno"> 3575</span>&#160;                    <span class="keywordflow">if</span> (primary)</div>
<div class="line"><a name="l03576"></a><span class="lineno"> 3576</span>&#160;                        <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].<a class="code" href="a02601.html#a65e861fd574d4b5dd70d500641b395e8">stateFlags</a> |= DISPLAY_DEVICE_PRIMARY_DEVICE;</div>
<div class="line"><a name="l03577"></a><span class="lineno"> 3577</span>&#160; </div>
<div class="line"><a name="l03578"></a><span class="lineno"> 3578</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l03579"></a><span class="lineno"> 3579</span>&#160;<span class="comment">                     * Save the current mode for this device.</span></div>
<div class="line"><a name="l03580"></a><span class="lineno"> 3580</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l03581"></a><span class="lineno"> 3581</span>&#160;                    <a class="code" href="a00665.html#a744babe1f701ee80c5d81250e69c4db5">UserSaveCurrentMode</a>(NULL, &amp;<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i], pdevmodeInformation);</div>
<div class="line"><a name="l03582"></a><span class="lineno"> 3582</span>&#160; </div>
<div class="line"><a name="l03583"></a><span class="lineno"> 3583</span>&#160;                } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l03584"></a><span class="lineno"> 3584</span>&#160; </div>
<div class="line"><a name="l03585"></a><span class="lineno"> 3585</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l03586"></a><span class="lineno"> 3586</span>&#160;<span class="comment">                     * If no display driver initialized with the requested</span></div>
<div class="line"><a name="l03587"></a><span class="lineno"> 3587</span>&#160;<span class="comment">                     * settings, put a message in the error log.</span></div>
<div class="line"><a name="l03588"></a><span class="lineno"> 3588</span>&#160;<span class="comment">                     *</span></div>
<div class="line"><a name="l03589"></a><span class="lineno"> 3589</span>&#160;<span class="comment">                     * However, lets try to load the following device (like</span></div>
<div class="line"><a name="l03590"></a><span class="lineno"> 3590</span>&#160;<span class="comment">                     * vga or vga RISC) so the user has a chance to repair</span></div>
<div class="line"><a name="l03591"></a><span class="lineno"> 3591</span>&#160;<span class="comment">                     * it</span></div>
<div class="line"><a name="l03592"></a><span class="lineno"> 3592</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l03593"></a><span class="lineno"> 3593</span>&#160;                    <a class="code" href="a00665.html#aa8b64103d379d1cc9e91a96db783aa63">UserLogDisplayDriverEvent</a>(MsgInvalidDisplayDriver);</div>
<div class="line"><a name="l03594"></a><span class="lineno"> 3594</span>&#160;                }</div>
<div class="line"><a name="l03595"></a><span class="lineno"> 3595</span>&#160; </div>
<div class="line"><a name="l03596"></a><span class="lineno"> 3596</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l03597"></a><span class="lineno"> 3597</span>&#160;<span class="comment">                 * Free memory allocated by ProbeAndCaptureDevmode</span></div>
<div class="line"><a name="l03598"></a><span class="lineno"> 3598</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l03599"></a><span class="lineno"> 3599</span>&#160;                <span class="keywordflow">if</span> (pdevmodeInformation &amp;&amp;</div>
<div class="line"><a name="l03600"></a><span class="lineno"> 3600</span>&#160;                    (pdevmodeInformation != &amp;sourceDevmodeInformation)) {</div>
<div class="line"><a name="l03601"></a><span class="lineno"> 3601</span>&#160; </div>
<div class="line"><a name="l03602"></a><span class="lineno"> 3602</span>&#160;                    UserFreePool(pdevmodeInformation);</div>
<div class="line"><a name="l03603"></a><span class="lineno"> 3603</span>&#160;                }</div>
<div class="line"><a name="l03604"></a><span class="lineno"> 3604</span>&#160;            }</div>
<div class="line"><a name="l03605"></a><span class="lineno"> 3605</span>&#160; </div>
<div class="line"><a name="l03606"></a><span class="lineno"> 3606</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l03607"></a><span class="lineno"> 3607</span>&#160;<span class="comment">             * Free the device if we are not going to use it.</span></div>
<div class="line"><a name="l03608"></a><span class="lineno"> 3608</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l03609"></a><span class="lineno"> 3609</span>&#160; </div>
<div class="line"><a name="l03610"></a><span class="lineno"> 3610</span>&#160;            <span class="keywordflow">if</span> (bKeepDevice == FALSE) {</div>
<div class="line"><a name="l03611"></a><span class="lineno"> 3611</span>&#160;                <a class="code" href="a00665.html#ae1691bdb53d715053026f55f68e5d3f4">UserFreeDevice</a>(pphysinfo);</div>
<div class="line"><a name="l03612"></a><span class="lineno"> 3612</span>&#160;            }</div>
<div class="line"><a name="l03613"></a><span class="lineno"> 3613</span>&#160;        }</div>
<div class="line"><a name="l03614"></a><span class="lineno"> 3614</span>&#160; </div>
<div class="line"><a name="l03615"></a><span class="lineno"> 3615</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l03616"></a><span class="lineno"> 3616</span>&#160;<span class="comment">         * Close the final registry handle if one remains</span></div>
<div class="line"><a name="l03617"></a><span class="lineno"> 3617</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l03618"></a><span class="lineno"> 3618</span>&#160;        <span class="keywordflow">if</span> (hkRegistry) {</div>
<div class="line"><a name="l03619"></a><span class="lineno"> 3619</span>&#160;            ZwClose(hkRegistry);</div>
<div class="line"><a name="l03620"></a><span class="lineno"> 3620</span>&#160;            hkRegistry = NULL;</div>
<div class="line"><a name="l03621"></a><span class="lineno"> 3621</span>&#160;        }</div>
<div class="line"><a name="l03622"></a><span class="lineno"> 3622</span>&#160; </div>
<div class="line"><a name="l03623"></a><span class="lineno"> 3623</span>&#160; </div>
<div class="line"><a name="l03624"></a><span class="lineno"> 3624</span>&#160; </div>
<div class="line"><a name="l03631"></a><span class="lineno"> 3631</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l03632"></a><span class="lineno"> 3632</span>&#160;<span class="comment">         * If we have more than one device that is attached to the desktop,</span></div>
<div class="line"><a name="l03633"></a><span class="lineno"> 3633</span>&#160;<span class="comment">         * then we need to determine which is the primary device</span></div>
<div class="line"><a name="l03634"></a><span class="lineno"> 3634</span>&#160;<span class="comment">         *</span></div>
<div class="line"><a name="l03635"></a><span class="lineno"> 3635</span>&#160;<span class="comment">         * MultiDriver devices are special - we only want to count all the</span></div>
<div class="line"><a name="l03636"></a><span class="lineno"> 3636</span>&#160;<span class="comment">         * multi-devices as *1* device, and use the *primary* one as the key</span></div>
<div class="line"><a name="l03637"></a><span class="lineno"> 3637</span>&#160;<span class="comment">         * device.  In a multiDriver system, we will initially require all</span></div>
<div class="line"><a name="l03638"></a><span class="lineno"> 3638</span>&#160;<span class="comment">         * devices attached to the desktop to be controlled by the multiDriver.</span></div>
<div class="line"><a name="l03639"></a><span class="lineno"> 3639</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l03640"></a><span class="lineno"> 3640</span>&#160; </div>
<div class="line"><a name="l03641"></a><span class="lineno"> 3641</span>&#160;        mdevMultiDriver = (ULONG) -1;</div>
<div class="line"><a name="l03642"></a><span class="lineno"> 3642</span>&#160; </div>
<div class="line"><a name="l03643"></a><span class="lineno"> 3643</span>&#160;        <span class="keywordflow">for</span> (i = 1; i &lt; <a class="code" href="a03257.html#a5f96c779e6c723388217ee64122dbec5">cphysDevInfo</a>; i++) {</div>
<div class="line"><a name="l03644"></a><span class="lineno"> 3644</span>&#160; </div>
<div class="line"><a name="l03645"></a><span class="lineno"> 3645</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDriver: gphysDevInfo has %08lx hdev&quot;</span>, localDispInfo[i].hDev));</div>
<div class="line"><a name="l03646"></a><span class="lineno"> 3646</span>&#160; </div>
<div class="line"><a name="l03647"></a><span class="lineno"> 3647</span>&#160;            <span class="keywordflow">if</span> (localDispInfo[i].hDev) {</div>
<div class="line"><a name="l03648"></a><span class="lineno"> 3648</span>&#160; </div>
<div class="line"><a name="l03649"></a><span class="lineno"> 3649</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l03650"></a><span class="lineno"> 3650</span>&#160;<span class="comment">                 * Check for multi drivers, and see if the state is consistent.</span></div>
<div class="line"><a name="l03651"></a><span class="lineno"> 3651</span>&#160;<span class="comment">                 * Right now, we require that if nay driver is multi, then all</span></div>
<div class="line"><a name="l03652"></a><span class="lineno"> 3652</span>&#160;<span class="comment">                 * loaded drivers must be.</span></div>
<div class="line"><a name="l03653"></a><span class="lineno"> 3653</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l03654"></a><span class="lineno"> 3654</span>&#160;                <span class="keywordflow">if</span> (mdevMultiDriver == (ULONG) -1) {</div>
<div class="line"><a name="l03655"></a><span class="lineno"> 3655</span>&#160;                    mdevMultiDriver = <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].<a class="code" href="a02601.html#a65e861fd574d4b5dd70d500641b395e8">stateFlags</a> &amp; DISPLAY_DEVICE_MULTI_DRIVER;</div>
<div class="line"><a name="l03656"></a><span class="lineno"> 3656</span>&#160;                }</div>
<div class="line"><a name="l03657"></a><span class="lineno"> 3657</span>&#160; </div>
<div class="line"><a name="l03658"></a><span class="lineno"> 3658</span>&#160;                <span class="keywordflow">if</span> (mdevMultiDriver != (<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].stateFlags &amp; DISPLAY_DEVICE_MULTI_DRIVER)) {</div>
<div class="line"><a name="l03659"></a><span class="lineno"> 3659</span>&#160; </div>
<div class="line"><a name="l03660"></a><span class="lineno"> 3660</span>&#160;                    <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(mdevMultiDriver != DISPLAY_DEVICE_MULTI_DRIVER);</div>
<div class="line"><a name="l03661"></a><span class="lineno"> 3661</span>&#160;                    <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l03662"></a><span class="lineno"> 3662</span>&#160;                }</div>
<div class="line"><a name="l03663"></a><span class="lineno"> 3663</span>&#160; </div>
<div class="line"><a name="l03664"></a><span class="lineno"> 3664</span>&#160; </div>
<div class="line"><a name="l03665"></a><span class="lineno"> 3665</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l03666"></a><span class="lineno"> 3666</span>&#160;<span class="comment">                 * Keep track of the primary device.</span></div>
<div class="line"><a name="l03667"></a><span class="lineno"> 3667</span>&#160;<span class="comment">                 * - Choose the first one, or even beter ...</span></div>
<div class="line"><a name="l03668"></a><span class="lineno"> 3668</span>&#160;<span class="comment">                 * - Choose the first non-mirroring one, or even beter ...</span></div>
<div class="line"><a name="l03669"></a><span class="lineno"> 3669</span>&#160;<span class="comment">                 * - Choose the one actually marked as primary</span></div>
<div class="line"><a name="l03670"></a><span class="lineno"> 3670</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l03671"></a><span class="lineno"> 3671</span>&#160; </div>
<div class="line"><a name="l03672"></a><span class="lineno"> 3672</span>&#160;                <span class="keywordflow">if</span> ((mdevPrimary == (ULONG) -1) ||</div>
<div class="line"><a name="l03673"></a><span class="lineno"> 3673</span>&#160;                    (<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].stateFlags &amp; DISPLAY_DEVICE_PRIMARY_DEVICE)) {</div>
<div class="line"><a name="l03674"></a><span class="lineno"> 3674</span>&#160; </div>
<div class="line"><a name="l03675"></a><span class="lineno"> 3675</span>&#160;                    TRACE_INIT((<span class="stringliteral">&quot; - marking as Primary&quot;</span>));</div>
<div class="line"><a name="l03676"></a><span class="lineno"> 3676</span>&#160; </div>
<div class="line"><a name="l03677"></a><span class="lineno"> 3677</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l03678"></a><span class="lineno"> 3678</span>&#160;<span class="comment">                     * Raise an error if there are multiple primaries, unless</span></div>
<div class="line"><a name="l03679"></a><span class="lineno"> 3679</span>&#160;<span class="comment">                     * it&#39;s ourself again !</span></div>
<div class="line"><a name="l03680"></a><span class="lineno"> 3680</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l03681"></a><span class="lineno"> 3681</span>&#160;                    <span class="keywordflow">if</span> (<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].stateFlags &amp; DISPLAY_DEVICE_PRIMARY_DEVICE) {</div>
<div class="line"><a name="l03682"></a><span class="lineno"> 3682</span>&#160; </div>
<div class="line"><a name="l03683"></a><span class="lineno"> 3683</span>&#160;                        <span class="keywordflow">if</span> (mdevPrimaryset &amp;&amp; (mdevPrimary != i)) {</div>
<div class="line"><a name="l03684"></a><span class="lineno"> 3684</span>&#160;                            <a class="code" href="a00665.html#aa8b64103d379d1cc9e91a96db783aa63">UserLogDisplayDriverEvent</a>(MsgInvalidConfiguration);</div>
<div class="line"><a name="l03685"></a><span class="lineno"> 3685</span>&#160;                        }</div>
<div class="line"><a name="l03686"></a><span class="lineno"> 3686</span>&#160;                        mdevPrimaryset = TRUE;</div>
<div class="line"><a name="l03687"></a><span class="lineno"> 3687</span>&#160;                    }</div>
<div class="line"><a name="l03688"></a><span class="lineno"> 3688</span>&#160; </div>
<div class="line"><a name="l03689"></a><span class="lineno"> 3689</span>&#160; </div>
<div class="line"><a name="l03690"></a><span class="lineno"> 3690</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l03691"></a><span class="lineno"> 3691</span>&#160;<span class="comment">                     * Unmark the previous primary if necessary.</span></div>
<div class="line"><a name="l03692"></a><span class="lineno"> 3692</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l03693"></a><span class="lineno"> 3693</span>&#160; </div>
<div class="line"><a name="l03694"></a><span class="lineno"> 3694</span>&#160;                    <span class="keywordflow">if</span> (mdevPrimary != (ULONG) -1) {</div>
<div class="line"><a name="l03695"></a><span class="lineno"> 3695</span>&#160;                        <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[mdevPrimary].<a class="code" href="a02601.html#a65e861fd574d4b5dd70d500641b395e8">stateFlags</a> &amp;= ~DISPLAY_DEVICE_PRIMARY_DEVICE;</div>
<div class="line"><a name="l03696"></a><span class="lineno"> 3696</span>&#160;                    }</div>
<div class="line"><a name="l03697"></a><span class="lineno"> 3697</span>&#160; </div>
<div class="line"><a name="l03698"></a><span class="lineno"> 3698</span>&#160;                    mdevPrimary = i;</div>
<div class="line"><a name="l03699"></a><span class="lineno"> 3699</span>&#160;                    <a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>     = localDispInfo[i].<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>;</div>
<div class="line"><a name="l03700"></a><span class="lineno"> 3700</span>&#160;                    <a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a5e0929a8ef013061be966961b2eddbff">pDevLock</a> = localDispInfo[i].<a class="code" href="a02605.html#a5e0929a8ef013061be966961b2eddbff">pDevLock</a>;</div>
<div class="line"><a name="l03701"></a><span class="lineno"> 3701</span>&#160;                    <a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a76af5d5bf5f5037a7ddcd8bb543fd388">pDevInfo</a> = &amp;<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i];</div>
<div class="line"><a name="l03702"></a><span class="lineno"> 3702</span>&#160;                    <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].<a class="code" href="a02601.html#a65e861fd574d4b5dd70d500641b395e8">stateFlags</a> |= DISPLAY_DEVICE_PRIMARY_DEVICE;</div>
<div class="line"><a name="l03703"></a><span class="lineno"> 3703</span>&#160; </div>
<div class="line"><a name="l03704"></a><span class="lineno"> 3704</span>&#160;                }</div>
<div class="line"><a name="l03705"></a><span class="lineno"> 3705</span>&#160; </div>
<div class="line"><a name="l03706"></a><span class="lineno"> 3706</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l03707"></a><span class="lineno"> 3707</span>&#160;<span class="comment">                 * Double check that we did not mark a mirror driver as primary</span></div>
<div class="line"><a name="l03708"></a><span class="lineno"> 3708</span>&#160;<span class="comment">                 * when it was not specifically asked for.</span></div>
<div class="line"><a name="l03709"></a><span class="lineno"> 3709</span>&#160;<span class="comment">                 * This could happen if the MIRROR driver was the *ONLY* driver</span></div>
<div class="line"><a name="l03710"></a><span class="lineno"> 3710</span>&#160;<span class="comment">                 * that loaded on the system !</span></div>
<div class="line"><a name="l03711"></a><span class="lineno"> 3711</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l03712"></a><span class="lineno"> 3712</span>&#160; </div>
<div class="line"><a name="l03713"></a><span class="lineno"> 3713</span>&#160;                <span class="keywordflow">if</span> ((mdevPrimaryset == FALSE) &amp;&amp;</div>
<div class="line"><a name="l03714"></a><span class="lineno"> 3714</span>&#160;                    (<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[mdevPrimary].stateFlags &amp;</div>
<div class="line"><a name="l03715"></a><span class="lineno"> 3715</span>&#160;                          DISPLAY_DEVICE_MIRRORING_DRIVER)) {</div>
<div class="line"><a name="l03716"></a><span class="lineno"> 3716</span>&#160; </div>
<div class="line"><a name="l03717"></a><span class="lineno"> 3717</span>&#160;                    <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(FALSE);</div>
<div class="line"><a name="l03718"></a><span class="lineno"> 3718</span>&#160;                }</div>
<div class="line"><a name="l03719"></a><span class="lineno"> 3719</span>&#160;            }</div>
<div class="line"><a name="l03720"></a><span class="lineno"> 3720</span>&#160; </div>
<div class="line"><a name="l03721"></a><span class="lineno"> 3721</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;\n&quot;</span>));</div>
<div class="line"><a name="l03722"></a><span class="lineno"> 3722</span>&#160;        }</div>
<div class="line"><a name="l03723"></a><span class="lineno"> 3723</span>&#160; </div>
<div class="line"><a name="l03724"></a><span class="lineno"> 3724</span>&#160; </div>
<div class="line"><a name="l03725"></a><span class="lineno"> 3725</span>&#160; </div>
<div class="line"><a name="l03732"></a><span class="lineno"> 3732</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l03733"></a><span class="lineno"> 3733</span>&#160;<span class="comment">         * If the display drivers have been installed, then look for the</span></div>
<div class="line"><a name="l03734"></a><span class="lineno"> 3734</span>&#160;<span class="comment">         * Mirroring devices - as long as we are not in basevideo !</span></div>
<div class="line"><a name="l03735"></a><span class="lineno"> 3735</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l03736"></a><span class="lineno"> 3736</span>&#160;        <span class="keywordflow">if</span> (displayInstalled &amp;&amp;</div>
<div class="line"><a name="l03737"></a><span class="lineno"> 3737</span>&#160;            (bAttachMirroring == FALSE) &amp;&amp;</div>
<div class="line"><a name="l03738"></a><span class="lineno"> 3738</span>&#160;            !<a class="code" href="a00665.html#a4f95d12ae9db57753d1ce7447479f0ee">gbBaseVideo</a>) {</div>
<div class="line"><a name="l03739"></a><span class="lineno"> 3739</span>&#160; </div>
<div class="line"><a name="l03740"></a><span class="lineno"> 3740</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;\n\nUserInit: LoadDriver: Look for Mirroring drivers\n\n&quot;</span>));</div>
<div class="line"><a name="l03741"></a><span class="lineno"> 3741</span>&#160;            bAttachMirroring = TRUE;</div>
<div class="line"><a name="l03742"></a><span class="lineno"> 3742</span>&#160;            bCheckForAttached = TRUE;</div>
<div class="line"><a name="l03743"></a><span class="lineno"> 3743</span>&#160;            <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l03744"></a><span class="lineno"> 3744</span>&#160;        }</div>
<div class="line"><a name="l03745"></a><span class="lineno"> 3745</span>&#160; </div>
<div class="line"><a name="l03746"></a><span class="lineno"> 3746</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l03747"></a><span class="lineno"> 3747</span>&#160;<span class="comment">         * We must be done.  So if we did install the display driver, just</span></div>
<div class="line"><a name="l03748"></a><span class="lineno"> 3748</span>&#160;<span class="comment">         * break out of this.</span></div>
<div class="line"><a name="l03749"></a><span class="lineno"> 3749</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l03750"></a><span class="lineno"> 3750</span>&#160;        <span class="keywordflow">if</span> (displayInstalled) {</div>
<div class="line"><a name="l03751"></a><span class="lineno"> 3751</span>&#160;            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l03752"></a><span class="lineno"> 3752</span>&#160;        }</div>
<div class="line"><a name="l03753"></a><span class="lineno"> 3753</span>&#160; </div>
<div class="line"><a name="l03754"></a><span class="lineno"> 3754</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l03755"></a><span class="lineno"> 3755</span>&#160;<span class="comment">         * If we were searching for a basevideo device and did not find</span></div>
<div class="line"><a name="l03756"></a><span class="lineno"> 3756</span>&#160;<span class="comment">         * it, then start the search at 1 again, and look for attached</span></div>
<div class="line"><a name="l03757"></a><span class="lineno"> 3757</span>&#160;<span class="comment">         * devices.</span></div>
<div class="line"><a name="l03758"></a><span class="lineno"> 3758</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l03759"></a><span class="lineno"> 3759</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="a00665.html#a4f95d12ae9db57753d1ce7447479f0ee">gbBaseVideo</a>) {</div>
<div class="line"><a name="l03760"></a><span class="lineno"> 3760</span>&#160; </div>
<div class="line"><a name="l03761"></a><span class="lineno"> 3761</span>&#160;            <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>, <span class="stringliteral">&quot;\n\nUserInit: LoadDriver: BaseVideo device not found - use default&quot;</span>);</div>
<div class="line"><a name="l03762"></a><span class="lineno"> 3762</span>&#160;            <a class="code" href="a00665.html#a4f95d12ae9db57753d1ce7447479f0ee">gbBaseVideo</a> = FALSE;</div>
<div class="line"><a name="l03763"></a><span class="lineno"> 3763</span>&#160;            bCheckForAttached = TRUE;</div>
<div class="line"><a name="l03764"></a><span class="lineno"> 3764</span>&#160;            <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l03765"></a><span class="lineno"> 3765</span>&#160;        }</div>
<div class="line"><a name="l03766"></a><span class="lineno"> 3766</span>&#160; </div>
<div class="line"><a name="l03767"></a><span class="lineno"> 3767</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l03768"></a><span class="lineno"> 3768</span>&#160;<span class="comment">         * If we were searching for an attached device and did not find</span></div>
<div class="line"><a name="l03769"></a><span class="lineno"> 3769</span>&#160;<span class="comment">         * it, then start the search at 1 again, and look for anything.</span></div>
<div class="line"><a name="l03770"></a><span class="lineno"> 3770</span>&#160;<span class="comment">         * make sure we try all possible entries before giving up.</span></div>
<div class="line"><a name="l03771"></a><span class="lineno"> 3771</span>&#160;<span class="comment">         *</span></div>
<div class="line"><a name="l03772"></a><span class="lineno"> 3772</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l03773"></a><span class="lineno"> 3773</span>&#160;        <span class="keywordflow">if</span> (bCheckForAttached) {</div>
<div class="line"><a name="l03774"></a><span class="lineno"> 3774</span>&#160; </div>
<div class="line"><a name="l03775"></a><span class="lineno"> 3775</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;\n\nUserInit: LoadDriver: Attached device not found - use default\n\n&quot;</span>));</div>
<div class="line"><a name="l03776"></a><span class="lineno"> 3776</span>&#160;            bCheckForAttached = FALSE;</div>
<div class="line"><a name="l03777"></a><span class="lineno"> 3777</span>&#160;            <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l03778"></a><span class="lineno"> 3778</span>&#160;        }</div>
<div class="line"><a name="l03779"></a><span class="lineno"> 3779</span>&#160; </div>
<div class="line"><a name="l03780"></a><span class="lineno"> 3780</span>&#160; </div>
<div class="line"><a name="l03781"></a><span class="lineno"> 3781</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l03782"></a><span class="lineno"> 3782</span>&#160;<span class="comment">         * There are no devices we can work with in the registry.</span></div>
<div class="line"><a name="l03783"></a><span class="lineno"> 3783</span>&#160;<span class="comment">         * We have a real failiure and take appropriate action.</span></div>
<div class="line"><a name="l03784"></a><span class="lineno"> 3784</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l03785"></a><span class="lineno"> 3785</span>&#160; </div>
<div class="line"><a name="l03786"></a><span class="lineno"> 3786</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l03787"></a><span class="lineno"> 3787</span>&#160;<span class="comment">         * If we failed on the first driver, then we can assume their is no</span></div>
<div class="line"><a name="l03788"></a><span class="lineno"> 3788</span>&#160;<span class="comment">         * driver installed.</span></div>
<div class="line"><a name="l03789"></a><span class="lineno"> 3789</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l03790"></a><span class="lineno"> 3790</span>&#160;        <span class="keywordflow">if</span> (i == 1) {</div>
<div class="line"><a name="l03791"></a><span class="lineno"> 3791</span>&#160;            <a class="code" href="a00371.html#a31aafffb49dfe98bdc749c9b35c90162">RIPMSG1</a>(<a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>,</div>
<div class="line"><a name="l03792"></a><span class="lineno"> 3792</span>&#160;                    <span class="stringliteral">&quot;UserInit: LoadDriver: No kernel driver entries under video reg-key: status=%#lx&quot;</span>,</div>
<div class="line"><a name="l03793"></a><span class="lineno"> 3793</span>&#160;                    Status);</div>
<div class="line"><a name="l03794"></a><span class="lineno"> 3794</span>&#160; </div>
<div class="line"><a name="l03795"></a><span class="lineno"> 3795</span>&#160;            Status = STATUS_NO_SUCH_DEVICE;</div>
<div class="line"><a name="l03796"></a><span class="lineno"> 3796</span>&#160;            hardErrorString = L<span class="stringliteral">&quot;KERNEL_VIDEO_DRIVER.SYS&quot;</span>;</div>
<div class="line"><a name="l03797"></a><span class="lineno"> 3797</span>&#160;            <span class="keywordflow">goto</span> userServerHardError;</div>
<div class="line"><a name="l03798"></a><span class="lineno"> 3798</span>&#160;        }</div>
<div class="line"><a name="l03799"></a><span class="lineno"> 3799</span>&#160; </div>
<div class="line"><a name="l03800"></a><span class="lineno"> 3800</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l03801"></a><span class="lineno"> 3801</span>&#160;<span class="comment">         * If the display driver is not installed, then this is another</span></div>
<div class="line"><a name="l03802"></a><span class="lineno"> 3802</span>&#160;<span class="comment">         * bad failiure - report it.</span></div>
<div class="line"><a name="l03803"></a><span class="lineno"> 3803</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l03804"></a><span class="lineno"> 3804</span>&#160;        <span class="keywordflow">if</span> (!displayInstalled) {</div>
<div class="line"><a name="l03805"></a><span class="lineno"> 3805</span>&#160;            <a class="code" href="a00371.html#a31aafffb49dfe98bdc749c9b35c90162">RIPMSG1</a>(<a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>,</div>
<div class="line"><a name="l03806"></a><span class="lineno"> 3806</span>&#160;                    <span class="stringliteral">&quot;UserInit: LoadDriver: Kernel driver not found in registry: status=%#lx&quot;</span>,</div>
<div class="line"><a name="l03807"></a><span class="lineno"> 3807</span>&#160;                    Status);</div>
<div class="line"><a name="l03808"></a><span class="lineno"> 3808</span>&#160; </div>
<div class="line"><a name="l03809"></a><span class="lineno"> 3809</span>&#160;            Status = STATUS_NO_SUCH_DEVICE;</div>
<div class="line"><a name="l03810"></a><span class="lineno"> 3810</span>&#160;            hardErrorString = L<span class="stringliteral">&quot;DISPLAY_DRIVER.DLL&quot;</span>;</div>
<div class="line"><a name="l03811"></a><span class="lineno"> 3811</span>&#160;            <span class="keywordflow">goto</span> userServerHardError;</div>
<div class="line"><a name="l03812"></a><span class="lineno"> 3812</span>&#160;        }</div>
<div class="line"><a name="l03813"></a><span class="lineno"> 3813</span>&#160; </div>
<div class="line"><a name="l03814"></a><span class="lineno"> 3814</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l03815"></a><span class="lineno"> 3815</span>&#160;<span class="comment">         * Never get here !</span></div>
<div class="line"><a name="l03816"></a><span class="lineno"> 3816</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l03817"></a><span class="lineno"> 3817</span>&#160; </div>
<div class="line"><a name="l03818"></a><span class="lineno"> 3818</span>&#160;     }</div>
<div class="line"><a name="l03819"></a><span class="lineno"> 3819</span>&#160; </div>
<div class="line"><a name="l03820"></a><span class="lineno"> 3820</span>&#160; </div>
<div class="line"><a name="l03826"></a><span class="lineno"> 3826</span>&#160;    k = 0;</div>
<div class="line"><a name="l03827"></a><span class="lineno"> 3827</span>&#160; </div>
<div class="line"><a name="l03828"></a><span class="lineno"> 3828</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l03829"></a><span class="lineno"> 3829</span>&#160;<span class="comment">     * If we have more than one device that is attached to the desktop,</span></div>
<div class="line"><a name="l03830"></a><span class="lineno"> 3830</span>&#160;<span class="comment">     * then we need to create the META structure for that device,</span></div>
<div class="line"><a name="l03831"></a><span class="lineno"> 3831</span>&#160;<span class="comment">     * initialize it, and use that as the primary device.</span></div>
<div class="line"><a name="l03832"></a><span class="lineno"> 3832</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l03833"></a><span class="lineno"> 3833</span>&#160; </div>
<div class="line"><a name="l03834"></a><span class="lineno"> 3834</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;\nUserInit: LoadDriver: Building MDEV\n\n&quot;</span>));</div>
<div class="line"><a name="l03835"></a><span class="lineno"> 3835</span>&#160; </div>
<div class="line"><a name="l03836"></a><span class="lineno"> 3836</span>&#160;    <span class="keywordflow">for</span> (i = 1; i &lt; <a class="code" href="a03257.html#a5f96c779e6c723388217ee64122dbec5">cphysDevInfo</a>; i++) {</div>
<div class="line"><a name="l03837"></a><span class="lineno"> 3837</span>&#160; </div>
<div class="line"><a name="l03838"></a><span class="lineno"> 3838</span>&#160;        <span class="keywordflow">if</span> (localDispInfo[i].hDev) {</div>
<div class="line"><a name="l03839"></a><span class="lineno"> 3839</span>&#160; </div>
<div class="line"><a name="l03840"></a><span class="lineno"> 3840</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l03841"></a><span class="lineno"> 3841</span>&#160;<span class="comment">             * Build up the MDEV</span></div>
<div class="line"><a name="l03842"></a><span class="lineno"> 3842</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l03843"></a><span class="lineno"> 3843</span>&#160;            mdev-&gt;mdevID           = <span class="stringliteral">&#39;MDEV&#39;</span>;</div>
<div class="line"><a name="l03844"></a><span class="lineno"> 3844</span>&#160;            mdev-&gt;cmdev            = k + 1;</div>
<div class="line"><a name="l03845"></a><span class="lineno"> 3845</span>&#160;            mdev-&gt;mdevPos[k].hdev  = localDispInfo[i].<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>;</div>
<div class="line"><a name="l03846"></a><span class="lineno"> 3846</span>&#160;            mdev-&gt;mdevPos[k].flags = (<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].<a class="code" href="a02601.html#a65e861fd574d4b5dd70d500641b395e8">stateFlags</a> &amp;</div>
<div class="line"><a name="l03847"></a><span class="lineno"> 3847</span>&#160;                                      DISPLAY_DEVICE_PRIMARY_DEVICE) ? 1 : 0;</div>
<div class="line"><a name="l03848"></a><span class="lineno"> 3848</span>&#160; </div>
<div class="line"><a name="l03849"></a><span class="lineno"> 3849</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l03850"></a><span class="lineno"> 3850</span>&#160;<span class="comment">             * The top left is based on the registry coordinates</span></div>
<div class="line"><a name="l03851"></a><span class="lineno"> 3851</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l03852"></a><span class="lineno"> 3852</span>&#160;            mdev-&gt;mdevPos[k].rcPos.left   =</div>
<div class="line"><a name="l03853"></a><span class="lineno"> 3853</span>&#160;                (localDispInfo[i].<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.left == <a class="code" href="a00665.html#accf086041259110de4bd6aac57f64279">DEFAULT_POS_VALUE</a>) ? 0 :</div>
<div class="line"><a name="l03854"></a><span class="lineno"> 3854</span>&#160;                 localDispInfo[i].<a class="code" href="a00020.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.left -</div>
<div class="line"><a name="l03855"></a><span class="lineno"> 3855</span>&#160;                 (<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].<a class="code" href="a02601.html#a19bee6963f84c40169f417b39bc46059">pCurrentDevmode</a>-&gt;dmPelsWidth / 2);</div>
<div class="line"><a name="l03856"></a><span class="lineno"> 3856</span>&#160;            mdev-&gt;mdevPos[k].rcPos.top    =</div>
<div class="line"><a name="l03857"></a><span class="lineno"> 3857</span>&#160;                (localDispInfo[i].<a class="code" href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.top  == <a class="code" href="a00665.html#accf086041259110de4bd6aac57f64279">DEFAULT_POS_VALUE</a>) ? 0 :</div>
<div class="line"><a name="l03858"></a><span class="lineno"> 3858</span>&#160;                 localDispInfo[i].<a class="code" href="a00020.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a>.top -</div>
<div class="line"><a name="l03859"></a><span class="lineno"> 3859</span>&#160;                 (<a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].<a class="code" href="a02601.html#a19bee6963f84c40169f417b39bc46059">pCurrentDevmode</a>-&gt;dmPelsHeight / 2);</div>
<div class="line"><a name="l03860"></a><span class="lineno"> 3860</span>&#160; </div>
<div class="line"><a name="l03861"></a><span class="lineno"> 3861</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l03862"></a><span class="lineno"> 3862</span>&#160;<span class="comment">             * The lower right is based on the size of the DEVMODE.</span></div>
<div class="line"><a name="l03863"></a><span class="lineno"> 3863</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l03864"></a><span class="lineno"> 3864</span>&#160;            mdev-&gt;mdevPos[k].rcPos.right  =</div>
<div class="line"><a name="l03865"></a><span class="lineno"> 3865</span>&#160;                mdev-&gt;mdevPos[k].rcPos.left +</div>
<div class="line"><a name="l03866"></a><span class="lineno"> 3866</span>&#160;                <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].<a class="code" href="a02601.html#a19bee6963f84c40169f417b39bc46059">pCurrentDevmode</a>-&gt;dmPelsWidth;</div>
<div class="line"><a name="l03867"></a><span class="lineno"> 3867</span>&#160;            mdev-&gt;mdevPos[k].rcPos.bottom =</div>
<div class="line"><a name="l03868"></a><span class="lineno"> 3868</span>&#160;                mdev-&gt;mdevPos[k].rcPos.top +</div>
<div class="line"><a name="l03869"></a><span class="lineno"> 3869</span>&#160;                <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].<a class="code" href="a02601.html#a19bee6963f84c40169f417b39bc46059">pCurrentDevmode</a>-&gt;dmPelsHeight;</div>
<div class="line"><a name="l03870"></a><span class="lineno"> 3870</span>&#160; </div>
<div class="line"><a name="l03871"></a><span class="lineno"> 3871</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;\n\nUserInit: LoadDriver: multiDriver %d - %d, %d, %d, %d\n&quot;</span>,</div>
<div class="line"><a name="l03872"></a><span class="lineno"> 3872</span>&#160;                        i,</div>
<div class="line"><a name="l03873"></a><span class="lineno"> 3873</span>&#160;                        mdev-&gt;mdevPos[k].rcPos.left,  mdev-&gt;mdevPos[k].rcPos.top,</div>
<div class="line"><a name="l03874"></a><span class="lineno"> 3874</span>&#160;                        mdev-&gt;mdevPos[k].rcPos.right, mdev-&gt;mdevPos[k].rcPos.bottom));</div>
<div class="line"><a name="l03875"></a><span class="lineno"> 3875</span>&#160; </div>
<div class="line"><a name="l03876"></a><span class="lineno"> 3876</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l03877"></a><span class="lineno"> 3877</span>&#160;<span class="comment">             * Next driver.</span></div>
<div class="line"><a name="l03878"></a><span class="lineno"> 3878</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l03879"></a><span class="lineno"> 3879</span>&#160; </div>
<div class="line"><a name="l03880"></a><span class="lineno"> 3880</span>&#160;            k++;</div>
<div class="line"><a name="l03881"></a><span class="lineno"> 3881</span>&#160;        }</div>
<div class="line"><a name="l03882"></a><span class="lineno"> 3882</span>&#160;    }</div>
<div class="line"><a name="l03883"></a><span class="lineno"> 3883</span>&#160; </div>
<div class="line"><a name="l03884"></a><span class="lineno"> 3884</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l03885"></a><span class="lineno"> 3885</span>&#160;<span class="comment">     * If we have no primary at this point, we are in trouble !</span></div>
<div class="line"><a name="l03886"></a><span class="lineno"> 3886</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l03887"></a><span class="lineno"> 3887</span>&#160;    <span class="keywordflow">if</span> ((k == 0) || (mdevPrimary == (ULONG) -1)) {</div>
<div class="line"><a name="l03888"></a><span class="lineno"> 3888</span>&#160;        <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(mdevPrimary != (ULONG) -1);</div>
<div class="line"><a name="l03889"></a><span class="lineno"> 3889</span>&#160;        <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(k != 0);</div>
<div class="line"><a name="l03890"></a><span class="lineno"> 3890</span>&#160;        k = 0;</div>
<div class="line"><a name="l03891"></a><span class="lineno"> 3891</span>&#160;    }</div>
<div class="line"><a name="l03892"></a><span class="lineno"> 3892</span>&#160; </div>
<div class="line"><a name="l03893"></a><span class="lineno"> 3893</span>&#160; </div>
<div class="line"><a name="l03894"></a><span class="lineno"> 3894</span>&#160; </div>
<div class="line"><a name="l03895"></a><span class="lineno"> 3895</span>&#160; </div>
<div class="line"><a name="l03901"></a><span class="lineno"> 3901</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l03902"></a><span class="lineno"> 3902</span>&#160;<span class="comment">     * If we have a multi-driver, we must first make sure all the rectangles</span></div>
<div class="line"><a name="l03903"></a><span class="lineno"> 3903</span>&#160;<span class="comment">     * actually make up a larger rectangle, since a META surface handled by a</span></div>
<div class="line"><a name="l03904"></a><span class="lineno"> 3904</span>&#160;<span class="comment">     * single driver must be rectangular.</span></div>
<div class="line"><a name="l03905"></a><span class="lineno"> 3905</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l03906"></a><span class="lineno"> 3906</span>&#160;    <span class="keywordflow">if</span> (k &amp;&amp; (mdevMultiDriver == DISPLAY_DEVICE_MULTI_DRIVER)) {</div>
<div class="line"><a name="l03907"></a><span class="lineno"> 3907</span>&#160; </div>
<div class="line"><a name="l03908"></a><span class="lineno"> 3908</span>&#160;        MDEV_RECT tmpRect[7];</div>
<div class="line"><a name="l03909"></a><span class="lineno"> 3909</span>&#160;        RECTL emptyRect = {0};</div>
<div class="line"><a name="l03910"></a><span class="lineno"> 3910</span>&#160;        ULONG crect = mdev-&gt;cmdev;</div>
<div class="line"><a name="l03911"></a><span class="lineno"> 3911</span>&#160; </div>
<div class="line"><a name="l03912"></a><span class="lineno"> 3912</span>&#160;        memcpy(&amp;(tmpRect[0]), &amp;(mdev-&gt;mdevPos[0]), mdev-&gt;cmdev * <span class="keyword">sizeof</span>(MDEV_RECT));</div>
<div class="line"><a name="l03913"></a><span class="lineno"> 3913</span>&#160; </div>
<div class="line"><a name="l03914"></a><span class="lineno"> 3914</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;\n\nUserInit: LoadDriver: multiDriver system\n\n\n&quot;</span>));</div>
<div class="line"><a name="l03915"></a><span class="lineno"> 3915</span>&#160; </div>
<div class="line"><a name="l03916"></a><span class="lineno"> 3916</span>&#160;        <span class="keywordflow">for</span> (i=0; i &lt; mdev-&gt;cmdev; i++) {</div>
<div class="line"><a name="l03917"></a><span class="lineno"> 3917</span>&#160;            <span class="keywordflow">for</span> (ii=0; ii &lt; mdev-&gt;cmdev; ii++) {</div>
<div class="line"><a name="l03918"></a><span class="lineno"> 3918</span>&#160;                <span class="keywordflow">for</span> (iii=0; iii &lt; mdev-&gt;cmdev; iii++) {</div>
<div class="line"><a name="l03919"></a><span class="lineno"> 3919</span>&#160; </div>
<div class="line"><a name="l03920"></a><span class="lineno"> 3920</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l03921"></a><span class="lineno"> 3921</span>&#160;<span class="comment">                     * Don&#39;t merge the same rectangle together</span></div>
<div class="line"><a name="l03922"></a><span class="lineno"> 3922</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l03923"></a><span class="lineno"> 3923</span>&#160;                    <span class="keywordflow">if</span> (ii == iii)</div>
<div class="line"><a name="l03924"></a><span class="lineno"> 3924</span>&#160;                        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l03925"></a><span class="lineno"> 3925</span>&#160; </div>
<div class="line"><a name="l03926"></a><span class="lineno"> 3926</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l03927"></a><span class="lineno"> 3927</span>&#160;<span class="comment">                     * Don&#39;t merge an empty rectangle</span></div>
<div class="line"><a name="l03928"></a><span class="lineno"> 3928</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l03929"></a><span class="lineno"> 3929</span>&#160;                    <span class="keywordflow">if</span> ((tmpRect[ii].rcPos.left  == 0) &amp;&amp;</div>
<div class="line"><a name="l03930"></a><span class="lineno"> 3930</span>&#160;                        (tmpRect[ii].rcPos.right == 0))</div>
<div class="line"><a name="l03931"></a><span class="lineno"> 3931</span>&#160;                        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l03932"></a><span class="lineno"> 3932</span>&#160; </div>
<div class="line"><a name="l03933"></a><span class="lineno"> 3933</span>&#160;                    <span class="keywordflow">if</span> ((tmpRect[iii].rcPos.left  == tmpRect[ii].rcPos.left) &amp;&amp;</div>
<div class="line"><a name="l03934"></a><span class="lineno"> 3934</span>&#160;                        (tmpRect[iii].rcPos.right == tmpRect[ii].rcPos.right)) {</div>
<div class="line"><a name="l03935"></a><span class="lineno"> 3935</span>&#160; </div>
<div class="line"><a name="l03936"></a><span class="lineno"> 3936</span>&#160;                        <span class="keywordflow">if</span> (tmpRect[iii].rcPos.bottom == tmpRect[ii].rcPos.top) {</div>
<div class="line"><a name="l03937"></a><span class="lineno"> 3937</span>&#160; </div>
<div class="line"><a name="l03938"></a><span class="lineno"> 3938</span>&#160;                            tmpRect[ii].rcPos.top = tmpRect[iii].rcPos.top;</div>
<div class="line"><a name="l03939"></a><span class="lineno"> 3939</span>&#160;                            tmpRect[iii].rcPos = emptyRect;</div>
<div class="line"><a name="l03940"></a><span class="lineno"> 3940</span>&#160;                            crect--;</div>
<div class="line"><a name="l03941"></a><span class="lineno"> 3941</span>&#160;                            <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l03942"></a><span class="lineno"> 3942</span>&#160;                        }</div>
<div class="line"><a name="l03943"></a><span class="lineno"> 3943</span>&#160; </div>
<div class="line"><a name="l03944"></a><span class="lineno"> 3944</span>&#160;                        <span class="keywordflow">if</span> (tmpRect[ii].rcPos.bottom == tmpRect[iii].rcPos.top) {</div>
<div class="line"><a name="l03945"></a><span class="lineno"> 3945</span>&#160; </div>
<div class="line"><a name="l03946"></a><span class="lineno"> 3946</span>&#160;                            tmpRect[iii].rcPos.top = tmpRect[ii].rcPos.top;</div>
<div class="line"><a name="l03947"></a><span class="lineno"> 3947</span>&#160;                            tmpRect[ii].rcPos = emptyRect;</div>
<div class="line"><a name="l03948"></a><span class="lineno"> 3948</span>&#160;                            crect--;</div>
<div class="line"><a name="l03949"></a><span class="lineno"> 3949</span>&#160;                            <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l03950"></a><span class="lineno"> 3950</span>&#160;                        }</div>
<div class="line"><a name="l03951"></a><span class="lineno"> 3951</span>&#160;                    }</div>
<div class="line"><a name="l03952"></a><span class="lineno"> 3952</span>&#160; </div>
<div class="line"><a name="l03953"></a><span class="lineno"> 3953</span>&#160;                    <span class="keywordflow">if</span> ((tmpRect[iii].rcPos.top    == tmpRect[ii].rcPos.top) &amp;&amp;</div>
<div class="line"><a name="l03954"></a><span class="lineno"> 3954</span>&#160;                        (tmpRect[iii].rcPos.bottom == tmpRect[ii].rcPos.bottom)) {</div>
<div class="line"><a name="l03955"></a><span class="lineno"> 3955</span>&#160; </div>
<div class="line"><a name="l03956"></a><span class="lineno"> 3956</span>&#160;                        <span class="keywordflow">if</span> (tmpRect[iii].rcPos.left == tmpRect[ii].rcPos.right) {</div>
<div class="line"><a name="l03957"></a><span class="lineno"> 3957</span>&#160; </div>
<div class="line"><a name="l03958"></a><span class="lineno"> 3958</span>&#160;                            tmpRect[ii].rcPos.right = tmpRect[iii].rcPos.right;</div>
<div class="line"><a name="l03959"></a><span class="lineno"> 3959</span>&#160;                            tmpRect[iii].rcPos = emptyRect;</div>
<div class="line"><a name="l03960"></a><span class="lineno"> 3960</span>&#160;                            crect--;</div>
<div class="line"><a name="l03961"></a><span class="lineno"> 3961</span>&#160;                            <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l03962"></a><span class="lineno"> 3962</span>&#160;                        }</div>
<div class="line"><a name="l03963"></a><span class="lineno"> 3963</span>&#160; </div>
<div class="line"><a name="l03964"></a><span class="lineno"> 3964</span>&#160;                        <span class="keywordflow">if</span> (tmpRect[ii].rcPos.left == tmpRect[iii].rcPos.right) {</div>
<div class="line"><a name="l03965"></a><span class="lineno"> 3965</span>&#160; </div>
<div class="line"><a name="l03966"></a><span class="lineno"> 3966</span>&#160;                            tmpRect[iii].rcPos.right = tmpRect[ii].rcPos.right;</div>
<div class="line"><a name="l03967"></a><span class="lineno"> 3967</span>&#160;                            tmpRect[ii].rcPos = emptyRect;</div>
<div class="line"><a name="l03968"></a><span class="lineno"> 3968</span>&#160;                            crect--;</div>
<div class="line"><a name="l03969"></a><span class="lineno"> 3969</span>&#160;                            <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l03970"></a><span class="lineno"> 3970</span>&#160;                        }</div>
<div class="line"><a name="l03971"></a><span class="lineno"> 3971</span>&#160;                    }</div>
<div class="line"><a name="l03972"></a><span class="lineno"> 3972</span>&#160;                }</div>
<div class="line"><a name="l03973"></a><span class="lineno"> 3973</span>&#160;            }</div>
<div class="line"><a name="l03974"></a><span class="lineno"> 3974</span>&#160;        }</div>
<div class="line"><a name="l03975"></a><span class="lineno"> 3975</span>&#160; </div>
<div class="line"><a name="l03976"></a><span class="lineno"> 3976</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l03977"></a><span class="lineno"> 3977</span>&#160;<span class="comment">         * If we do not end up with  a rectangle based at 0,0, we will want to</span></div>
<div class="line"><a name="l03978"></a><span class="lineno"> 3978</span>&#160;<span class="comment">         * boot with only one screen and let the user fix the configuration.</span></div>
<div class="line"><a name="l03979"></a><span class="lineno"> 3979</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l03980"></a><span class="lineno"> 3980</span>&#160; </div>
<div class="line"><a name="l03981"></a><span class="lineno"> 3981</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;\n&quot;</span>));</div>
<div class="line"><a name="l03982"></a><span class="lineno"> 3982</span>&#160; </div>
<div class="line"><a name="l03983"></a><span class="lineno"> 3983</span>&#160;        <span class="keywordflow">for</span> (i=0; i &lt; mdev-&gt;cmdev; i++) {</div>
<div class="line"><a name="l03984"></a><span class="lineno"> 3984</span>&#160; </div>
<div class="line"><a name="l03985"></a><span class="lineno"> 3985</span>&#160;            <span class="keywordflow">if</span> ((tmpRect[i].rcPos.left != 0) ||</div>
<div class="line"><a name="l03986"></a><span class="lineno"> 3986</span>&#160;                (tmpRect[i].rcPos.top  != 0)) {</div>
<div class="line"><a name="l03987"></a><span class="lineno"> 3987</span>&#160; </div>
<div class="line"><a name="l03988"></a><span class="lineno"> 3988</span>&#160;                TRACE_INIT((<span class="stringliteral">&quot;\n&quot;</span>));</div>
<div class="line"><a name="l03989"></a><span class="lineno"> 3989</span>&#160;                crect = 0;</div>
<div class="line"><a name="l03990"></a><span class="lineno"> 3990</span>&#160;                <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l03991"></a><span class="lineno"> 3991</span>&#160;            }</div>
<div class="line"><a name="l03992"></a><span class="lineno"> 3992</span>&#160;        }</div>
<div class="line"><a name="l03993"></a><span class="lineno"> 3993</span>&#160; </div>
<div class="line"><a name="l03994"></a><span class="lineno"> 3994</span>&#160;        <span class="keywordflow">if</span> (crect != 1) {</div>
<div class="line"><a name="l03995"></a><span class="lineno"> 3995</span>&#160; </div>
<div class="line"><a name="l03996"></a><span class="lineno"> 3996</span>&#160;            <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(crect == 1);</div>
<div class="line"><a name="l03997"></a><span class="lineno"> 3997</span>&#160;            <a class="code" href="a00665.html#aa8b64103d379d1cc9e91a96db783aa63">UserLogDisplayDriverEvent</a>(MsgInvalidConfiguration);</div>
<div class="line"><a name="l03998"></a><span class="lineno"> 3998</span>&#160; </div>
<div class="line"><a name="l03999"></a><span class="lineno"> 3999</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l04000"></a><span class="lineno"> 4000</span>&#160;<span class="comment">             * Rebuild a one device MDEV with offset at zero, and the original</span></div>
<div class="line"><a name="l04001"></a><span class="lineno"> 4001</span>&#160;<span class="comment">             * devmode dimenstions (we know those are good).</span></div>
<div class="line"><a name="l04002"></a><span class="lineno"> 4002</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l04003"></a><span class="lineno"> 4003</span>&#160;            mdev-&gt;mdevID                  = <span class="stringliteral">&#39;MDEV&#39;</span>;</div>
<div class="line"><a name="l04004"></a><span class="lineno"> 4004</span>&#160;            mdev-&gt;cmdev                   = 1;</div>
<div class="line"><a name="l04005"></a><span class="lineno"> 4005</span>&#160;            mdev-&gt;mdevPos[0].hdev         = mdev-&gt;mdevPos[0].hdev;</div>
<div class="line"><a name="l04006"></a><span class="lineno"> 4006</span>&#160;            mdev-&gt;mdevPos[0].flags        = 0;</div>
<div class="line"><a name="l04007"></a><span class="lineno"> 4007</span>&#160;            mdev-&gt;mdevPos[0].rcPos.right  -= mdev-&gt;mdevPos[0].rcPos.left;</div>
<div class="line"><a name="l04008"></a><span class="lineno"> 4008</span>&#160;            mdev-&gt;mdevPos[0].rcPos.bottom -= mdev-&gt;mdevPos[0].rcPos.top;</div>
<div class="line"><a name="l04009"></a><span class="lineno"> 4009</span>&#160;            mdev-&gt;mdevPos[0].rcPos.left   = 0;</div>
<div class="line"><a name="l04010"></a><span class="lineno"> 4010</span>&#160;            mdev-&gt;mdevPos[0].rcPos.top    = 0;</div>
<div class="line"><a name="l04011"></a><span class="lineno"> 4011</span>&#160; </div>
<div class="line"><a name="l04012"></a><span class="lineno"> 4012</span>&#160;        }</div>
<div class="line"><a name="l04013"></a><span class="lineno"> 4013</span>&#160; </div>
<div class="line"><a name="l04014"></a><span class="lineno"> 4014</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l04015"></a><span class="lineno"> 4015</span>&#160;        <span class="comment">// BUGBUG NULL terminate the string</span></div>
<div class="line"><a name="l04016"></a><span class="lineno"> 4016</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l04017"></a><span class="lineno"> 4017</span>&#160; </div>
<div class="line"><a name="l04018"></a><span class="lineno"> 4018</span>&#160;        <a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a> = GreCreateHDEV(<a class="code" href="a03257.html#a9744bfca19a1b2f747cb8816a7685cd8">strDisplayDriver</a>.Buffer,</div>
<div class="line"><a name="l04019"></a><span class="lineno"> 4019</span>&#160;                                         (LPDEVMODEW) &amp;mdev,</div>
<div class="line"><a name="l04020"></a><span class="lineno"> 4020</span>&#160;                                         NULL,</div>
<div class="line"><a name="l04021"></a><span class="lineno"> 4021</span>&#160;                                         TRUE,</div>
<div class="line"><a name="l04022"></a><span class="lineno"> 4022</span>&#160;                                         (PDEVICE_LOCK *)&amp;<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a5e0929a8ef013061be966961b2eddbff">pDevLock</a>);</div>
<div class="line"><a name="l04023"></a><span class="lineno"> 4023</span>&#160; </div>
<div class="line"><a name="l04024"></a><span class="lineno"> 4024</span>&#160; </div>
<div class="line"><a name="l04025"></a><span class="lineno"> 4025</span>&#160;        <a class="code" href="a00665.html#a762f2fbf9a0ad4d9a63f7c92adce1297">bMultipleDisplaySystem</a> = TRUE;</div>
<div class="line"><a name="l04026"></a><span class="lineno"> 4026</span>&#160; </div>
<div class="line"><a name="l04027"></a><span class="lineno"> 4027</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (k &gt; 1) {</div>
<div class="line"><a name="l04028"></a><span class="lineno"> 4028</span>&#160; </div>
<div class="line"><a name="l04029"></a><span class="lineno"> 4029</span>&#160; </div>
<div class="line"><a name="l04030"></a><span class="lineno"> 4030</span>&#160; </div>
<div class="line"><a name="l04036"></a><span class="lineno"> 4036</span>&#160;        ULONG color = 0;</div>
<div class="line"><a name="l04037"></a><span class="lineno"> 4037</span>&#160; </div>
<div class="line"><a name="l04038"></a><span class="lineno"> 4038</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDriver: Got MDEV - parse MDEV data\n&quot;</span>));</div>
<div class="line"><a name="l04039"></a><span class="lineno"> 4039</span>&#160; </div>
<div class="line"><a name="l04040"></a><span class="lineno"> 4040</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l04041"></a><span class="lineno"> 4041</span>&#160;<span class="comment">         * Lets make sure all rectangles are at the same position for now.</span></div>
<div class="line"><a name="l04042"></a><span class="lineno"> 4042</span>&#160;<span class="comment">         * Lets also make sure the color depths match.</span></div>
<div class="line"><a name="l04043"></a><span class="lineno"> 4043</span>&#160;<span class="comment">         * If they are not, let&#39;s just default back to one display and bring</span></div>
<div class="line"><a name="l04044"></a><span class="lineno"> 4044</span>&#160;<span class="comment">         * up the display applet</span></div>
<div class="line"><a name="l04045"></a><span class="lineno"> 4045</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l04046"></a><span class="lineno"> 4046</span>&#160; </div>
<div class="line"><a name="l04047"></a><span class="lineno"> 4047</span>&#160;        <span class="keywordflow">for</span> (i = 1; i &lt; <a class="code" href="a03257.html#a5f96c779e6c723388217ee64122dbec5">cphysDevInfo</a>; i++) {</div>
<div class="line"><a name="l04048"></a><span class="lineno"> 4048</span>&#160; </div>
<div class="line"><a name="l04049"></a><span class="lineno"> 4049</span>&#160;            <span class="keywordflow">if</span> (localDispInfo[i].hDev) {</div>
<div class="line"><a name="l04050"></a><span class="lineno"> 4050</span>&#160; </div>
<div class="line"><a name="l04051"></a><span class="lineno"> 4051</span>&#160;                <span class="keywordflow">if</span> (color == 0) {</div>
<div class="line"><a name="l04052"></a><span class="lineno"> 4052</span>&#160;                    color = <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].<a class="code" href="a02601.html#a19bee6963f84c40169f417b39bc46059">pCurrentDevmode</a>-&gt;dmBitsPerPel;</div>
<div class="line"><a name="l04053"></a><span class="lineno"> 4053</span>&#160; </div>
<div class="line"><a name="l04054"></a><span class="lineno"> 4054</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (color != <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].pCurrentDevmode-&gt;dmBitsPerPel) {</div>
<div class="line"><a name="l04055"></a><span class="lineno"> 4055</span>&#160; </div>
<div class="line"><a name="l04056"></a><span class="lineno"> 4056</span>&#160;                    <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(color != <a class="code" href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a>[i].pCurrentDevmode-&gt;dmBitsPerPel);</div>
<div class="line"><a name="l04057"></a><span class="lineno"> 4057</span>&#160; </div>
<div class="line"><a name="l04058"></a><span class="lineno"> 4058</span>&#160;                    <a class="code" href="a00665.html#aa8b64103d379d1cc9e91a96db783aa63">UserLogDisplayDriverEvent</a>(MsgInvalidConfiguration);</div>
<div class="line"><a name="l04059"></a><span class="lineno"> 4059</span>&#160;                    k = 1;</div>
<div class="line"><a name="l04060"></a><span class="lineno"> 4060</span>&#160;                    <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l04061"></a><span class="lineno"> 4061</span>&#160;                }</div>
<div class="line"><a name="l04062"></a><span class="lineno"> 4062</span>&#160;            }</div>
<div class="line"><a name="l04063"></a><span class="lineno"> 4063</span>&#160;        }</div>
<div class="line"><a name="l04064"></a><span class="lineno"> 4064</span>&#160; </div>
<div class="line"><a name="l04065"></a><span class="lineno"> 4065</span>&#160;        <span class="keywordflow">for</span> (i = 1; i &lt; mdev-&gt;cmdev; i++) {</div>
<div class="line"><a name="l04066"></a><span class="lineno"> 4066</span>&#160; </div>
<div class="line"><a name="l04067"></a><span class="lineno"> 4067</span>&#160;            <span class="keywordflow">if</span> ((mdev-&gt;mdevPos[i].rcPos.left   != 0)                              ||</div>
<div class="line"><a name="l04068"></a><span class="lineno"> 4068</span>&#160;                (mdev-&gt;mdevPos[i].rcPos.top    != 0)                              ||</div>
<div class="line"><a name="l04069"></a><span class="lineno"> 4069</span>&#160;                (mdev-&gt;mdevPos[i].rcPos.right  != mdev-&gt;mdevPos[i-1].rcPos.right) ||</div>
<div class="line"><a name="l04070"></a><span class="lineno"> 4070</span>&#160;                (mdev-&gt;mdevPos[i].rcPos.bottom != mdev-&gt;mdevPos[i-1].rcPos.bottom))</div>
<div class="line"><a name="l04071"></a><span class="lineno"> 4071</span>&#160;            {</div>
<div class="line"><a name="l04072"></a><span class="lineno"> 4072</span>&#160;                <a class="code" href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a>(FALSE);</div>
<div class="line"><a name="l04073"></a><span class="lineno"> 4073</span>&#160; </div>
<div class="line"><a name="l04074"></a><span class="lineno"> 4074</span>&#160;                <span class="comment">/*</span></div>
<div class="line"><a name="l04075"></a><span class="lineno"> 4075</span>&#160;<span class="comment">                 * Set k=1 which will cause us to bypass the HMDEV call</span></div>
<div class="line"><a name="l04076"></a><span class="lineno"> 4076</span>&#160;<span class="comment">                 */</span></div>
<div class="line"><a name="l04077"></a><span class="lineno"> 4077</span>&#160;                <a class="code" href="a00665.html#aa8b64103d379d1cc9e91a96db783aa63">UserLogDisplayDriverEvent</a>(MsgInvalidConfiguration);</div>
<div class="line"><a name="l04078"></a><span class="lineno"> 4078</span>&#160;                k = 1;</div>
<div class="line"><a name="l04079"></a><span class="lineno"> 4079</span>&#160;                <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l04080"></a><span class="lineno"> 4080</span>&#160;            }</div>
<div class="line"><a name="l04081"></a><span class="lineno"> 4081</span>&#160;        }</div>
<div class="line"><a name="l04082"></a><span class="lineno"> 4082</span>&#160; </div>
<div class="line"><a name="l04083"></a><span class="lineno"> 4083</span>&#160;        <span class="keywordflow">if</span> (k &gt; 1) {</div>
<div class="line"><a name="l04084"></a><span class="lineno"> 4084</span>&#160;            <a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a> = GreCreateHMDEV(mdev,</div>
<div class="line"><a name="l04085"></a><span class="lineno"> 4085</span>&#160;                                              (PDEVICE_LOCK *)&amp;<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a5e0929a8ef013061be966961b2eddbff">pDevLock</a>);</div>
<div class="line"><a name="l04086"></a><span class="lineno"> 4086</span>&#160;        }</div>
<div class="line"><a name="l04087"></a><span class="lineno"> 4087</span>&#160; </div>
<div class="line"><a name="l04088"></a><span class="lineno"> 4088</span>&#160;        <a class="code" href="a00665.html#a762f2fbf9a0ad4d9a63f7c92adce1297">bMultipleDisplaySystem</a> = TRUE;</div>
<div class="line"><a name="l04089"></a><span class="lineno"> 4089</span>&#160;    }</div>
<div class="line"><a name="l04090"></a><span class="lineno"> 4090</span>&#160; </div>
<div class="line"><a name="l04091"></a><span class="lineno"> 4091</span>&#160;    <span class="keywordflow">if</span> (k == 0) {</div>
<div class="line"><a name="l04092"></a><span class="lineno"> 4092</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l04093"></a><span class="lineno"> 4093</span>&#160;<span class="comment">         * We did not find any display drivers.</span></div>
<div class="line"><a name="l04094"></a><span class="lineno"> 4094</span>&#160;<span class="comment">         * This is where we bugcheck !</span></div>
<div class="line"><a name="l04095"></a><span class="lineno"> 4095</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l04096"></a><span class="lineno"> 4096</span>&#160; </div>
<div class="line"><a name="l04097"></a><span class="lineno"> 4097</span>&#160;         <a class="code" href="a00371.html#a31aafffb49dfe98bdc749c9b35c90162">RIPMSG1</a>(<a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>,</div>
<div class="line"><a name="l04098"></a><span class="lineno"> 4098</span>&#160;                 <span class="stringliteral">&quot;UserInit: LoadDriver: no loaded display drivers: status=%#lx&quot;</span>,</div>
<div class="line"><a name="l04099"></a><span class="lineno"> 4099</span>&#160;                 Status);</div>
<div class="line"><a name="l04100"></a><span class="lineno"> 4100</span>&#160; </div>
<div class="line"><a name="l04101"></a><span class="lineno"> 4101</span>&#160;         Status = STATUS_NO_SUCH_DEVICE;</div>
<div class="line"><a name="l04102"></a><span class="lineno"> 4102</span>&#160;         hardErrorString = L<span class="stringliteral">&quot;PRIMARY_DISPLAY_DRIVER.DLL&quot;</span>;</div>
<div class="line"><a name="l04103"></a><span class="lineno"> 4103</span>&#160;         <span class="keywordflow">goto</span> userServerHardError;</div>
<div class="line"><a name="l04104"></a><span class="lineno"> 4104</span>&#160;    }</div>
<div class="line"><a name="l04105"></a><span class="lineno"> 4105</span>&#160; </div>
<div class="line"><a name="l04106"></a><span class="lineno"> 4106</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l04107"></a><span class="lineno"> 4107</span>&#160;<span class="comment">     * Properly initialize the primary device.</span></div>
<div class="line"><a name="l04108"></a><span class="lineno"> 4108</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l04109"></a><span class="lineno"> 4109</span>&#160; </div>
<div class="line"><a name="l04110"></a><span class="lineno"> 4110</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l04111"></a><span class="lineno"> 4111</span>&#160;<span class="comment">     * Fill up the devcaps in GDI shared memory</span></div>
<div class="line"><a name="l04112"></a><span class="lineno"> 4112</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l04113"></a><span class="lineno"> 4113</span>&#160;    GreUpdateSharedDevCaps(<a class="code" href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a>-&gt;<a class="code" href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">hDev</a>);</div>
<div class="line"><a name="l04114"></a><span class="lineno"> 4114</span>&#160; </div>
<div class="line"><a name="l04115"></a><span class="lineno"> 4115</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l04116"></a><span class="lineno"> 4116</span>&#160;<span class="comment">     * Now init the rest of USER</span></div>
<div class="line"><a name="l04117"></a><span class="lineno"> 4117</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l04118"></a><span class="lineno"> 4118</span>&#160;    <a class="code" href="a00665.html#ad5ab78c8fa70d3c1a63e786bc439ee73">InitUserScreen</a>();</div>
<div class="line"><a name="l04119"></a><span class="lineno"> 4119</span>&#160; </div>
<div class="line"><a name="l04120"></a><span class="lineno"> 4120</span>&#160; </div>
<div class="line"><a name="l04121"></a><span class="lineno"> 4121</span>&#160; </div>
<div class="line"><a name="l04122"></a><span class="lineno"> 4122</span>&#160; </div>
<div class="line"><a name="l04123"></a><span class="lineno"> 4123</span>&#160; </div>
<div class="line"><a name="l04130"></a><span class="lineno"> 4130</span>&#160;<span class="preprocessor">#if DBG</span></div>
<div class="line"><a name="l04131"></a><span class="lineno"> 4131</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l04132"></a><span class="lineno"> 4132</span>&#160;<span class="comment">     * If no VGA is found print a warning message.</span></div>
<div class="line"><a name="l04133"></a><span class="lineno"> 4133</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l04134"></a><span class="lineno"> 4134</span>&#160;<span class="preprocessor">#if !defined(_MIPS_) &amp;&amp; !defined(_ALPHA_) &amp;&amp; !defined(_PPC_)</span></div>
<div class="line"><a name="l04135"></a><span class="lineno"> 4135</span>&#160;    <span class="keywordflow">if</span> (!vgaInstalled) {</div>
<div class="line"><a name="l04136"></a><span class="lineno"> 4136</span>&#160;        <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>, <span class="stringliteral">&quot;UserInit: LoadDriver: No VGA driver found in the system&quot;</span>);</div>
<div class="line"><a name="l04137"></a><span class="lineno"> 4137</span>&#160;    }</div>
<div class="line"><a name="l04138"></a><span class="lineno"> 4138</span>&#160;<span class="preprocessor">#endif // _MIPS_ &amp;&amp; _ALPHA_ &amp;&amp; _PPC_</span></div>
<div class="line"><a name="l04139"></a><span class="lineno"> 4139</span>&#160;<span class="preprocessor">#endif // DBG</span></div>
<div class="line"><a name="l04140"></a><span class="lineno"> 4140</span>&#160; </div>
<div class="line"><a name="l04141"></a><span class="lineno"> 4141</span>&#160; </div>
<div class="line"><a name="l04142"></a><span class="lineno"> 4142</span>&#160;    Status = STATUS_SUCCESS;</div>
<div class="line"><a name="l04143"></a><span class="lineno"> 4143</span>&#160; </div>
<div class="line"><a name="l04144"></a><span class="lineno"> 4144</span>&#160;userServerHardError:</div>
<div class="line"><a name="l04145"></a><span class="lineno"> 4145</span>&#160; </div>
<div class="line"><a name="l04146"></a><span class="lineno"> 4146</span>&#160;    <span class="keywordflow">if</span> (!NT_SUCCESS(Status)) {</div>
<div class="line"><a name="l04147"></a><span class="lineno"> 4147</span>&#160; </div>
<div class="line"><a name="l04148"></a><span class="lineno"> 4148</span>&#160;        UNICODE_STRING  ErrorString;</div>
<div class="line"><a name="l04149"></a><span class="lineno"> 4149</span>&#160;        PUNICODE_STRING ErrorStringPointer = &amp;ErrorString;</div>
<div class="line"><a name="l04150"></a><span class="lineno"> 4150</span>&#160;        ULONG           ErrorResponse;</div>
<div class="line"><a name="l04151"></a><span class="lineno"> 4151</span>&#160; </div>
<div class="line"><a name="l04152"></a><span class="lineno"> 4152</span>&#160;        TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDriver: No working display driver found\n&quot;</span>));</div>
<div class="line"><a name="l04153"></a><span class="lineno"> 4153</span>&#160; </div>
<div class="line"><a name="l04154"></a><span class="lineno"> 4154</span>&#160;        RtlInitUnicodeString(ErrorStringPointer, hardErrorString);</div>
<div class="line"><a name="l04155"></a><span class="lineno"> 4155</span>&#160; </div>
<div class="line"><a name="l04156"></a><span class="lineno"> 4156</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l04157"></a><span class="lineno"> 4157</span>&#160;<span class="comment">         * need to get image name</span></div>
<div class="line"><a name="l04158"></a><span class="lineno"> 4158</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l04159"></a><span class="lineno"> 4159</span>&#160;        ExRaiseHardError((NTSTATUS)STATUS_MISSING_SYSTEMFILE,</div>
<div class="line"><a name="l04160"></a><span class="lineno"> 4160</span>&#160;                         1,</div>
<div class="line"><a name="l04161"></a><span class="lineno"> 4161</span>&#160;                         0x00000001,</div>
<div class="line"><a name="l04162"></a><span class="lineno"> 4162</span>&#160;                         (PULONG) (&amp;ErrorStringPointer),</div>
<div class="line"><a name="l04163"></a><span class="lineno"> 4163</span>&#160;                         OptionOk,</div>
<div class="line"><a name="l04164"></a><span class="lineno"> 4164</span>&#160;                         &amp;ErrorResponse);</div>
<div class="line"><a name="l04165"></a><span class="lineno"> 4165</span>&#160; </div>
<div class="line"><a name="l04166"></a><span class="lineno"> 4166</span>&#160;    }</div>
<div class="line"><a name="l04167"></a><span class="lineno"> 4167</span>&#160; </div>
<div class="line"><a name="l04168"></a><span class="lineno"> 4168</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDriver: Display driver properly installed\n&quot;</span>));</div>
<div class="line"><a name="l04169"></a><span class="lineno"> 4169</span>&#160;    TRACE_INIT((<span class="stringliteral">&quot;UserInit: LoadDriver: Finished display driver loading sequence\n&quot;</span>));</div>
<div class="line"><a name="l04170"></a><span class="lineno"> 4170</span>&#160; </div>
<div class="line"><a name="l04171"></a><span class="lineno"> 4171</span>&#160;    <span class="keywordflow">return</span> Status;</div>
<div class="line"><a name="l04172"></a><span class="lineno"> 4172</span>&#160;}</div>
<div class="line"><a name="l04173"></a><span class="lineno"> 4173</span>&#160; </div>
<div class="line"><a name="l04174"></a><span class="lineno"> 4174</span>&#160; </div>
<div class="line"><a name="l04175"></a><span class="lineno"> 4175</span>&#160; </div>
<div class="line"><a name="l04186"></a><span class="lineno"> 4186</span>&#160;NTSTATUS</div>
<div class="line"><a name="l04187"></a><span class="lineno"><a class="line" href="a00665.html#a3affe9dfb55da29e7cb9e961db8d3f9a"> 4187</a></span>&#160;<a class="code" href="a00665.html#a3affe9dfb55da29e7cb9e961db8d3f9a">NtUserEnumDisplaySettings</a>(</div>
<div class="line"><a name="l04188"></a><span class="lineno"> 4188</span>&#160;    IN PUNICODE_STRING pstrDeviceName,</div>
<div class="line"><a name="l04189"></a><span class="lineno"> 4189</span>&#160;    IN <a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>           iModeNum,</div>
<div class="line"><a name="l04190"></a><span class="lineno"> 4190</span>&#160;    OUT LPDEVMODEW     lpDevMode,</div>
<div class="line"><a name="l04191"></a><span class="lineno"> 4191</span>&#160;    <a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>              dwFalgs)</div>
<div class="line"><a name="l04192"></a><span class="lineno"> 4192</span>&#160;{</div>
<div class="line"><a name="l04193"></a><span class="lineno"> 4193</span>&#160;    NTSTATUS retval = STATUS_INVALID_PARAMETER_1;</div>
<div class="line"><a name="l04194"></a><span class="lineno"> 4194</span>&#160; </div>
<div class="line"><a name="l04195"></a><span class="lineno"> 4195</span>&#160;    UNICODE_STRING strDevice;</div>
<div class="line"><a name="l04196"></a><span class="lineno"> 4196</span>&#160;    UNICODE_STRING us;</div>
<div class="line"><a name="l04197"></a><span class="lineno"> 4197</span>&#160;    <a class="code" href="a02601.html">PPHYSICAL_DEV_INFO</a> physinfo = NULL;</div>
<div class="line"><a name="l04198"></a><span class="lineno"> 4198</span>&#160;    USHORT DriverExtraSize;</div>
<div class="line"><a name="l04199"></a><span class="lineno"> 4199</span>&#160; </div>
<div class="line"><a name="l04200"></a><span class="lineno"> 4200</span>&#160;    <span class="comment">//</span></div>
<div class="line"><a name="l04201"></a><span class="lineno"> 4201</span>&#160;    <span class="comment">// Probe the DeviceName and the DEVMODE.</span></div>
<div class="line"><a name="l04202"></a><span class="lineno"> 4202</span>&#160;    <span class="comment">//</span></div>
<div class="line"><a name="l04203"></a><span class="lineno"> 4203</span>&#160; </div>
<div class="line"><a name="l04204"></a><span class="lineno"> 4204</span>&#160;    <a class="code" href="a00899.html#ae451a2dc8791c420d7c956a63adc33ba">EnterCrit</a>();</div>
<div class="line"><a name="l04205"></a><span class="lineno"> 4205</span>&#160; </div>
<div class="line"><a name="l04206"></a><span class="lineno"> 4206</span>&#160;    <span class="keywordflow">try</span> {</div>
<div class="line"><a name="l04207"></a><span class="lineno"> 4207</span>&#160; </div>
<div class="line"><a name="l04208"></a><span class="lineno"> 4208</span>&#160;        ProbeForRead(lpDevMode, <span class="keyword">sizeof</span>(DEVMODEW), <span class="keyword">sizeof</span>(USHORT));</div>
<div class="line"><a name="l04209"></a><span class="lineno"> 4209</span>&#160; </div>
<div class="line"><a name="l04210"></a><span class="lineno"> 4210</span>&#160;        DriverExtraSize = lpDevMode-&gt;dmDriverExtra;</div>
<div class="line"><a name="l04211"></a><span class="lineno"> 4211</span>&#160; </div>
<div class="line"><a name="l04212"></a><span class="lineno"> 4212</span>&#160;        ProbeForWrite(lpDevMode,</div>
<div class="line"><a name="l04213"></a><span class="lineno"> 4213</span>&#160;                      <span class="keyword">sizeof</span>(DEVMODEW) + DriverExtraSize,</div>
<div class="line"><a name="l04214"></a><span class="lineno"> 4214</span>&#160;                      <span class="keyword">sizeof</span>(USHORT));</div>
<div class="line"><a name="l04215"></a><span class="lineno"> 4215</span>&#160; </div>
<div class="line"><a name="l04216"></a><span class="lineno"> 4216</span>&#160; </div>
<div class="line"><a name="l04217"></a><span class="lineno"> 4217</span>&#160;        <span class="keywordflow">if</span> (lpDevMode-&gt;dmSize != <span class="keyword">sizeof</span>(DEVMODEW))</div>
<div class="line"><a name="l04218"></a><span class="lineno"> 4218</span>&#160;        {</div>
<div class="line"><a name="l04219"></a><span class="lineno"> 4219</span>&#160;            <a class="code" href="a00899.html#ac2181d07596893ed44d18aa267ce4d23">LeaveCrit</a>();</div>
<div class="line"><a name="l04220"></a><span class="lineno"> 4220</span>&#160;            <span class="keywordflow">return</span> STATUS_BUFFER_TOO_SMALL;</div>
<div class="line"><a name="l04221"></a><span class="lineno"> 4221</span>&#160;        }</div>
<div class="line"><a name="l04222"></a><span class="lineno"> 4222</span>&#160; </div>
<div class="line"><a name="l04223"></a><span class="lineno"> 4223</span>&#160;    } except (EXCEPTION_EXECUTE_HANDLER) {</div>
<div class="line"><a name="l04224"></a><span class="lineno"> 4224</span>&#160;        <a class="code" href="a00899.html#ac2181d07596893ed44d18aa267ce4d23">LeaveCrit</a>();</div>
<div class="line"><a name="l04225"></a><span class="lineno"> 4225</span>&#160;        <span class="keywordflow">return</span> GetExceptionCode();</div>
<div class="line"><a name="l04226"></a><span class="lineno"> 4226</span>&#160;    }</div>
<div class="line"><a name="l04227"></a><span class="lineno"> 4227</span>&#160; </div>
<div class="line"><a name="l04228"></a><span class="lineno"> 4228</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="a00665.html#ad1a9b877f3705368d000061536e1b1fb">ProbeAndCaptureDeviceName</a>(&amp;strDevice, pstrDeviceName)) {</div>
<div class="line"><a name="l04229"></a><span class="lineno"> 4229</span>&#160;        physinfo = <a class="code" href="a00665.html#a291aca25f546e197608f39e4887001a9">UserGetDeviceFromName</a>(&amp;strDevice, USER_DEVICE_NOTOWNED);</div>
<div class="line"><a name="l04230"></a><span class="lineno"> 4230</span>&#160; </div>
<div class="line"><a name="l04231"></a><span class="lineno"> 4231</span>&#160;        <span class="keywordflow">if</span> (strDevice.Buffer)</div>
<div class="line"><a name="l04232"></a><span class="lineno"> 4232</span>&#160;            UserFreePool(strDevice.Buffer);</div>
<div class="line"><a name="l04233"></a><span class="lineno"> 4233</span>&#160;    }</div>
<div class="line"><a name="l04234"></a><span class="lineno"> 4234</span>&#160; </div>
<div class="line"><a name="l04235"></a><span class="lineno"> 4235</span>&#160;    <span class="keywordflow">if</span> (physinfo) {</div>
<div class="line"><a name="l04236"></a><span class="lineno"> 4236</span>&#160; </div>
<div class="line"><a name="l04237"></a><span class="lineno"> 4237</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l04238"></a><span class="lineno"> 4238</span>&#160;        <span class="comment">// -2 means we want the registry DEVMODE to do matching on the</span></div>
<div class="line"><a name="l04239"></a><span class="lineno"> 4239</span>&#160;        <span class="comment">// client side.</span></div>
<div class="line"><a name="l04240"></a><span class="lineno"> 4240</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l04241"></a><span class="lineno"> 4241</span>&#160; </div>
<div class="line"><a name="l04242"></a><span class="lineno"> 4242</span>&#160;        <span class="keywordflow">if</span> (iModeNum == (<a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>) -2) {</div>
<div class="line"><a name="l04243"></a><span class="lineno"> 4243</span>&#160; </div>
<div class="line"><a name="l04244"></a><span class="lineno"> 4244</span>&#160;            PDEVMODEW pdevmode;</div>
<div class="line"><a name="l04245"></a><span class="lineno"> 4245</span>&#160; </div>
<div class="line"><a name="l04246"></a><span class="lineno"> 4246</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;NtUserEnumDisp: -2 mode\n&quot;</span>));</div>
<div class="line"><a name="l04247"></a><span class="lineno"> 4247</span>&#160; </div>
<div class="line"><a name="l04248"></a><span class="lineno"> 4248</span>&#160;            <span class="keywordflow">if</span> (pdevmode = UserAllocPool(<span class="keyword">sizeof</span>(DEVMODEW) + MAXUSHORT,</div>
<div class="line"><a name="l04249"></a><span class="lineno"> 4249</span>&#160;                                         TAG_DEVMODE)) {</div>
<div class="line"><a name="l04250"></a><span class="lineno"> 4250</span>&#160; </div>
<div class="line"><a name="l04251"></a><span class="lineno"> 4251</span>&#160;                RtlZeroMemory(pdevmode, <span class="keyword">sizeof</span>(DEVMODEW));</div>
<div class="line"><a name="l04252"></a><span class="lineno"> 4252</span>&#160;                pdevmode-&gt;dmSize        = 0xDDDD;</div>
<div class="line"><a name="l04253"></a><span class="lineno"> 4253</span>&#160;                pdevmode-&gt;dmDriverExtra = MAXUSHORT;</div>
<div class="line"><a name="l04254"></a><span class="lineno"> 4254</span>&#160; </div>
<div class="line"><a name="l04255"></a><span class="lineno"> 4255</span>&#160;                RtlInitUnicodeString(&amp;us, &amp;(physinfo-&gt;<a class="code" href="a02601.html#a19e507bdf81c67304d8ba81c600ac0eb">szNtDeviceName</a>[0]));</div>
<div class="line"><a name="l04256"></a><span class="lineno"> 4256</span>&#160; </div>
<div class="line"><a name="l04257"></a><span class="lineno"> 4257</span>&#160;                retval = <a class="code" href="a00665.html#a1496fe4e3afa850f6bd625b0c3542b78">UserGetDisplayDriverParameters</a>(&amp;us,</div>
<div class="line"><a name="l04258"></a><span class="lineno"> 4258</span>&#160;                                                        pdevmode,</div>
<div class="line"><a name="l04259"></a><span class="lineno"> 4259</span>&#160;                                                        FALSE);</div>
<div class="line"><a name="l04260"></a><span class="lineno"> 4260</span>&#160; </div>
<div class="line"><a name="l04261"></a><span class="lineno"> 4261</span>&#160;                <span class="keywordflow">if</span> (NT_SUCCESS(retval)) {</div>
<div class="line"><a name="l04262"></a><span class="lineno"> 4262</span>&#160; </div>
<div class="line"><a name="l04263"></a><span class="lineno"> 4263</span>&#160;                    <span class="keywordflow">try</span> {</div>
<div class="line"><a name="l04264"></a><span class="lineno"> 4264</span>&#160; </div>
<div class="line"><a name="l04265"></a><span class="lineno"> 4265</span>&#160;                        DriverExtraSize = min(DriverExtraSize,</div>
<div class="line"><a name="l04266"></a><span class="lineno"> 4266</span>&#160;                                              pdevmode-&gt;dmDriverExtra);</div>
<div class="line"><a name="l04267"></a><span class="lineno"> 4267</span>&#160; </div>
<div class="line"><a name="l04268"></a><span class="lineno"> 4268</span>&#160;                        RtlCopyMemory(lpDevMode + 1,</div>
<div class="line"><a name="l04269"></a><span class="lineno"> 4269</span>&#160;                                      pdevmode + 1,</div>
<div class="line"><a name="l04270"></a><span class="lineno"> 4270</span>&#160;                                      DriverExtraSize);</div>
<div class="line"><a name="l04271"></a><span class="lineno"> 4271</span>&#160; </div>
<div class="line"><a name="l04272"></a><span class="lineno"> 4272</span>&#160;                        RtlCopyMemory(lpDevMode,</div>
<div class="line"><a name="l04273"></a><span class="lineno"> 4273</span>&#160;                                      pdevmode,</div>
<div class="line"><a name="l04274"></a><span class="lineno"> 4274</span>&#160;                                      <span class="keyword">sizeof</span>(DEVMODEW));</div>
<div class="line"><a name="l04275"></a><span class="lineno"> 4275</span>&#160; </div>
<div class="line"><a name="l04276"></a><span class="lineno"> 4276</span>&#160;                    } except(EXCEPTION_EXECUTE_HANDLER) {</div>
<div class="line"><a name="l04277"></a><span class="lineno"> 4277</span>&#160; </div>
<div class="line"><a name="l04278"></a><span class="lineno"> 4278</span>&#160;                        retval = STATUS_INVALID_PARAMETER_3;</div>
<div class="line"><a name="l04279"></a><span class="lineno"> 4279</span>&#160;                    }</div>
<div class="line"><a name="l04280"></a><span class="lineno"> 4280</span>&#160;                }</div>
<div class="line"><a name="l04281"></a><span class="lineno"> 4281</span>&#160; </div>
<div class="line"><a name="l04282"></a><span class="lineno"> 4282</span>&#160;                UserFreePool(pdevmode);</div>
<div class="line"><a name="l04283"></a><span class="lineno"> 4283</span>&#160;            }</div>
<div class="line"><a name="l04284"></a><span class="lineno"> 4284</span>&#160; </div>
<div class="line"><a name="l04285"></a><span class="lineno"> 4285</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l04286"></a><span class="lineno"> 4286</span>&#160;        <span class="comment">// -1 means returns the current device mode.</span></div>
<div class="line"><a name="l04287"></a><span class="lineno"> 4287</span>&#160;        <span class="comment">// We store the full DEVMODE in the</span></div>
<div class="line"><a name="l04288"></a><span class="lineno"> 4288</span>&#160;        <span class="comment">//</span></div>
<div class="line"><a name="l04289"></a><span class="lineno"> 4289</span>&#160; </div>
<div class="line"><a name="l04290"></a><span class="lineno"> 4290</span>&#160;        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iModeNum == (<a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>) -1) {</div>
<div class="line"><a name="l04291"></a><span class="lineno"> 4291</span>&#160; </div>
<div class="line"><a name="l04292"></a><span class="lineno"> 4292</span>&#160;            TRACE_INIT((<span class="stringliteral">&quot;NtUserEnumDisp: -1 mode\n&quot;</span>));</div>
<div class="line"><a name="l04293"></a><span class="lineno"> 4293</span>&#160; </div>
<div class="line"><a name="l04294"></a><span class="lineno"> 4294</span>&#160;            <span class="keywordflow">if</span> (physinfo-&gt;<a class="code" href="a02601.html#a19bee6963f84c40169f417b39bc46059">pCurrentDevmode</a> != NULL) {</div>
<div class="line"><a name="l04295"></a><span class="lineno"> 4295</span>&#160; </div>
<div class="line"><a name="l04296"></a><span class="lineno"> 4296</span>&#160;                <span class="keywordflow">try</span> {</div>
<div class="line"><a name="l04297"></a><span class="lineno"> 4297</span>&#160; </div>
<div class="line"><a name="l04298"></a><span class="lineno"> 4298</span>&#160;                    DriverExtraSize = min(DriverExtraSize,</div>
<div class="line"><a name="l04299"></a><span class="lineno"> 4299</span>&#160;                                          physinfo-&gt;<a class="code" href="a02601.html#a19bee6963f84c40169f417b39bc46059">pCurrentDevmode</a>-&gt;dmDriverExtra);</div>
<div class="line"><a name="l04300"></a><span class="lineno"> 4300</span>&#160; </div>
<div class="line"><a name="l04301"></a><span class="lineno"> 4301</span>&#160;                    <span class="comment">//</span></div>
<div class="line"><a name="l04302"></a><span class="lineno"> 4302</span>&#160;                    <span class="comment">// We know the DEVMODE we called the driver with is of</span></div>
<div class="line"><a name="l04303"></a><span class="lineno"> 4303</span>&#160;                    <span class="comment">// size sizeof(DEVMODEW)</span></div>
<div class="line"><a name="l04304"></a><span class="lineno"> 4304</span>&#160;                    <span class="comment">//</span></div>
<div class="line"><a name="l04305"></a><span class="lineno"> 4305</span>&#160; </div>
<div class="line"><a name="l04306"></a><span class="lineno"> 4306</span>&#160;                    RtlCopyMemory(lpDevMode + 1,</div>
<div class="line"><a name="l04307"></a><span class="lineno"> 4307</span>&#160;                                  physinfo-&gt;<a class="code" href="a02601.html#a19bee6963f84c40169f417b39bc46059">pCurrentDevmode</a> + 1,</div>
<div class="line"><a name="l04308"></a><span class="lineno"> 4308</span>&#160;                                  DriverExtraSize);</div>
<div class="line"><a name="l04309"></a><span class="lineno"> 4309</span>&#160; </div>
<div class="line"><a name="l04310"></a><span class="lineno"> 4310</span>&#160;                    RtlCopyMemory(lpDevMode,</div>
<div class="line"><a name="l04311"></a><span class="lineno"> 4311</span>&#160;                                  physinfo-&gt;<a class="code" href="a02601.html#a19bee6963f84c40169f417b39bc46059">pCurrentDevmode</a>,</div>
<div class="line"><a name="l04312"></a><span class="lineno"> 4312</span>&#160;                                  <span class="keyword">sizeof</span>(DEVMODEW));</div>
<div class="line"><a name="l04313"></a><span class="lineno"> 4313</span>&#160; </div>
<div class="line"><a name="l04314"></a><span class="lineno"> 4314</span>&#160;                    retval = STATUS_SUCCESS;</div>
<div class="line"><a name="l04315"></a><span class="lineno"> 4315</span>&#160; </div>
<div class="line"><a name="l04316"></a><span class="lineno"> 4316</span>&#160;                } except(EXCEPTION_EXECUTE_HANDLER) {</div>
<div class="line"><a name="l04317"></a><span class="lineno"> 4317</span>&#160; </div>
<div class="line"><a name="l04318"></a><span class="lineno"> 4318</span>&#160;                    retval = STATUS_INVALID_PARAMETER_3;</div>
<div class="line"><a name="l04319"></a><span class="lineno"> 4319</span>&#160;                }</div>
<div class="line"><a name="l04320"></a><span class="lineno"> 4320</span>&#160; </div>
<div class="line"><a name="l04321"></a><span class="lineno"> 4321</span>&#160;            }</div>
<div class="line"><a name="l04322"></a><span class="lineno"> 4322</span>&#160; </div>
<div class="line"><a name="l04323"></a><span class="lineno"> 4323</span>&#160;        } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l04324"></a><span class="lineno"> 4324</span>&#160; </div>
<div class="line"><a name="l04325"></a><span class="lineno"> 4325</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l04326"></a><span class="lineno"> 4326</span>&#160;<span class="comment">             * PERF - Can we use something else to synchronize access to the</span></div>
<div class="line"><a name="l04327"></a><span class="lineno"> 4327</span>&#160;<span class="comment">             * list of modes ?</span></div>
<div class="line"><a name="l04328"></a><span class="lineno"> 4328</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l04329"></a><span class="lineno"> 4329</span>&#160; </div>
<div class="line"><a name="l04330"></a><span class="lineno"> 4330</span>&#160;            <a class="code" href="a00665.html#af58d084fab4188005b01c976f76bbefa">UserBuildDevmodeList</a>(physinfo);</div>
<div class="line"><a name="l04331"></a><span class="lineno"> 4331</span>&#160; </div>
<div class="line"><a name="l04332"></a><span class="lineno"> 4332</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l04333"></a><span class="lineno"> 4333</span>&#160;            <span class="comment">// now return the information</span></div>
<div class="line"><a name="l04334"></a><span class="lineno"> 4334</span>&#160;            <span class="comment">//</span></div>
<div class="line"><a name="l04335"></a><span class="lineno"> 4335</span>&#160; </div>
<div class="line"><a name="l04336"></a><span class="lineno"> 4336</span>&#160;            <span class="keywordflow">if</span> ( (physinfo-&gt;<a class="code" href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">cbdevmodeInfo</a> == 0) ||</div>
<div class="line"><a name="l04337"></a><span class="lineno"> 4337</span>&#160;                 (physinfo-&gt;<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a> == NULL) ) {</div>
<div class="line"><a name="l04338"></a><span class="lineno"> 4338</span>&#160; </div>
<div class="line"><a name="l04339"></a><span class="lineno"> 4339</span>&#160;                <a class="code" href="a00371.html#ae61d954062a9ece52e350e54cad9a23d">RIPERR0</a>(ERROR_INVALID_PARAMETER, <a class="code" href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a>, <span class="stringliteral">&quot;EnumDisplaySettings physinfo is inconsistent \n&quot;</span>);</div>
<div class="line"><a name="l04340"></a><span class="lineno"> 4340</span>&#160;                retval = STATUS_UNSUCCESSFUL;</div>
<div class="line"><a name="l04341"></a><span class="lineno"> 4341</span>&#160; </div>
<div class="line"><a name="l04342"></a><span class="lineno"> 4342</span>&#160;            } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l04343"></a><span class="lineno"> 4343</span>&#160; </div>
<div class="line"><a name="l04344"></a><span class="lineno"> 4344</span>&#160;                <a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>      dwTotalSize = 0;</div>
<div class="line"><a name="l04345"></a><span class="lineno"> 4345</span>&#160;                LPDEVMODEW lpdm = physinfo-&gt;<a class="code" href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">devmodeInfo</a>;</div>
<div class="line"><a name="l04346"></a><span class="lineno"> 4346</span>&#160;                <a class="code" href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a>      i;</div>
<div class="line"><a name="l04347"></a><span class="lineno"> 4347</span>&#160; </div>
<div class="line"><a name="l04348"></a><span class="lineno"> 4348</span>&#160;                retval = STATUS_INVALID_PARAMETER_2;</div>
<div class="line"><a name="l04349"></a><span class="lineno"> 4349</span>&#160; </div>
<div class="line"><a name="l04350"></a><span class="lineno"> 4350</span>&#160;                <span class="keywordflow">for</span> (i = 0; dwTotalSize &lt; physinfo-&gt;<a class="code" href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">cbdevmodeInfo</a>; i++) {</div>
<div class="line"><a name="l04351"></a><span class="lineno"> 4351</span>&#160; </div>
<div class="line"><a name="l04352"></a><span class="lineno"> 4352</span>&#160;                    <span class="keywordflow">if</span> (i == iModeNum) {</div>
<div class="line"><a name="l04353"></a><span class="lineno"> 4353</span>&#160; </div>
<div class="line"><a name="l04354"></a><span class="lineno"> 4354</span>&#160;                        <span class="keywordflow">try</span> {</div>
<div class="line"><a name="l04355"></a><span class="lineno"> 4355</span>&#160; </div>
<div class="line"><a name="l04356"></a><span class="lineno"> 4356</span>&#160;                            DriverExtraSize = min(DriverExtraSize,</div>
<div class="line"><a name="l04357"></a><span class="lineno"> 4357</span>&#160;                                                  lpdm-&gt;dmDriverExtra);</div>
<div class="line"><a name="l04358"></a><span class="lineno"> 4358</span>&#160; </div>
<div class="line"><a name="l04359"></a><span class="lineno"> 4359</span>&#160;                            RtlZeroMemory(lpDevMode, <span class="keyword">sizeof</span>(DEVMODEW));</div>
<div class="line"><a name="l04360"></a><span class="lineno"> 4360</span>&#160; </div>
<div class="line"><a name="l04361"></a><span class="lineno"> 4361</span>&#160;                            <span class="comment">//</span></div>
<div class="line"><a name="l04362"></a><span class="lineno"> 4362</span>&#160;                            <span class="comment">// Check the size since the devmode returned</span></div>
<div class="line"><a name="l04363"></a><span class="lineno"> 4363</span>&#160;                            <span class="comment">// by the driver can be smaller than the current</span></div>
<div class="line"><a name="l04364"></a><span class="lineno"> 4364</span>&#160;                            <span class="comment">// size.</span></div>
<div class="line"><a name="l04365"></a><span class="lineno"> 4365</span>&#160;                            <span class="comment">//</span></div>
<div class="line"><a name="l04366"></a><span class="lineno"> 4366</span>&#160; </div>
<div class="line"><a name="l04367"></a><span class="lineno"> 4367</span>&#160;                            RtlCopyMemory(lpDevMode + 1,</div>
<div class="line"><a name="l04368"></a><span class="lineno"> 4368</span>&#160;                                          ((PUCHAR)lpdm) + lpdm-&gt;dmSize,</div>
<div class="line"><a name="l04369"></a><span class="lineno"> 4369</span>&#160;                                          DriverExtraSize);</div>
<div class="line"><a name="l04370"></a><span class="lineno"> 4370</span>&#160; </div>
<div class="line"><a name="l04371"></a><span class="lineno"> 4371</span>&#160;                            RtlCopyMemory(lpDevMode,</div>
<div class="line"><a name="l04372"></a><span class="lineno"> 4372</span>&#160;                                          lpdm,</div>
<div class="line"><a name="l04373"></a><span class="lineno"> 4373</span>&#160;                                          min(<span class="keyword">sizeof</span>(DEVMODEW), lpdm-&gt;dmSize));</div>
<div class="line"><a name="l04374"></a><span class="lineno"> 4374</span>&#160; </div>
<div class="line"><a name="l04375"></a><span class="lineno"> 4375</span>&#160;                            retval = STATUS_SUCCESS;</div>
<div class="line"><a name="l04376"></a><span class="lineno"> 4376</span>&#160; </div>
<div class="line"><a name="l04377"></a><span class="lineno"> 4377</span>&#160;                        } except(EXCEPTION_EXECUTE_HANDLER) {</div>
<div class="line"><a name="l04378"></a><span class="lineno"> 4378</span>&#160; </div>
<div class="line"><a name="l04379"></a><span class="lineno"> 4379</span>&#160;                            retval = STATUS_INVALID_PARAMETER_3;</div>
<div class="line"><a name="l04380"></a><span class="lineno"> 4380</span>&#160;                        }</div>
<div class="line"><a name="l04381"></a><span class="lineno"> 4381</span>&#160; </div>
<div class="line"><a name="l04382"></a><span class="lineno"> 4382</span>&#160;                        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l04383"></a><span class="lineno"> 4383</span>&#160; </div>
<div class="line"><a name="l04384"></a><span class="lineno"> 4384</span>&#160;                    } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l04385"></a><span class="lineno"> 4385</span>&#160; </div>
<div class="line"><a name="l04386"></a><span class="lineno"> 4386</span>&#160;                        dwTotalSize += lpdm-&gt;dmSize + lpdm-&gt;dmDriverExtra;</div>
<div class="line"><a name="l04387"></a><span class="lineno"> 4387</span>&#160; </div>
<div class="line"><a name="l04388"></a><span class="lineno"> 4388</span>&#160;                        lpdm = (LPDEVMODEW) (((LPBYTE)lpdm) +</div>
<div class="line"><a name="l04389"></a><span class="lineno"> 4389</span>&#160;                                             lpdm-&gt;dmSize +</div>
<div class="line"><a name="l04390"></a><span class="lineno"> 4390</span>&#160;                                             lpdm-&gt;dmDriverExtra);</div>
<div class="line"><a name="l04391"></a><span class="lineno"> 4391</span>&#160; </div>
<div class="line"><a name="l04392"></a><span class="lineno"> 4392</span>&#160;                    }</div>
<div class="line"><a name="l04393"></a><span class="lineno"> 4393</span>&#160;                }</div>
<div class="line"><a name="l04394"></a><span class="lineno"> 4394</span>&#160; </div>
<div class="line"><a name="l04395"></a><span class="lineno"> 4395</span>&#160;            }</div>
<div class="line"><a name="l04396"></a><span class="lineno"> 4396</span>&#160; </div>
<div class="line"><a name="l04397"></a><span class="lineno"> 4397</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l04398"></a><span class="lineno"> 4398</span>&#160;<span class="comment">             * As an acceleration, we will only free the list if the call</span></div>
<div class="line"><a name="l04399"></a><span class="lineno"> 4399</span>&#160;<span class="comment">             * failed because &quot;i&quot; was too large, so that listing all the modes</span></div>
<div class="line"><a name="l04400"></a><span class="lineno"> 4400</span>&#160;<span class="comment">             * does not require building the list each time.</span></div>
<div class="line"><a name="l04401"></a><span class="lineno"> 4401</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l04402"></a><span class="lineno"> 4402</span>&#160; </div>
<div class="line"><a name="l04403"></a><span class="lineno"> 4403</span>&#160;            <span class="keywordflow">if</span> (retval == STATUS_INVALID_PARAMETER_2) {</div>
<div class="line"><a name="l04404"></a><span class="lineno"> 4404</span>&#160; </div>
<div class="line"><a name="l04405"></a><span class="lineno"> 4405</span>&#160;                <a class="code" href="a00665.html#a8c6e355920ecb443e8d0f47bfbfff26d">UserReleaseDevmodeList</a>(physinfo);</div>
<div class="line"><a name="l04406"></a><span class="lineno"> 4406</span>&#160;            }</div>
<div class="line"><a name="l04407"></a><span class="lineno"> 4407</span>&#160;        }</div>
<div class="line"><a name="l04408"></a><span class="lineno"> 4408</span>&#160; </div>
<div class="line"><a name="l04409"></a><span class="lineno"> 4409</span>&#160;        <a class="code" href="a00665.html#ae1691bdb53d715053026f55f68e5d3f4">UserFreeDevice</a>(physinfo);</div>
<div class="line"><a name="l04410"></a><span class="lineno"> 4410</span>&#160;    }</div>
<div class="line"><a name="l04411"></a><span class="lineno"> 4411</span>&#160; </div>
<div class="line"><a name="l04412"></a><span class="lineno"> 4412</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l04413"></a><span class="lineno"> 4413</span>&#160;<span class="comment">     * Update the driver extra size</span></div>
<div class="line"><a name="l04414"></a><span class="lineno"> 4414</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l04415"></a><span class="lineno"> 4415</span>&#160; </div>
<div class="line"><a name="l04416"></a><span class="lineno"> 4416</span>&#160;    <span class="keywordflow">if</span> (retval == STATUS_SUCCESS)</div>
<div class="line"><a name="l04417"></a><span class="lineno"> 4417</span>&#160;    {</div>
<div class="line"><a name="l04418"></a><span class="lineno"> 4418</span>&#160;        <span class="keywordflow">try</span> {</div>
<div class="line"><a name="l04419"></a><span class="lineno"> 4419</span>&#160;            lpDevMode-&gt;dmDriverExtra = DriverExtraSize;</div>
<div class="line"><a name="l04420"></a><span class="lineno"> 4420</span>&#160;        } except (EXCEPTION_EXECUTE_HANDLER) {</div>
<div class="line"><a name="l04421"></a><span class="lineno"> 4421</span>&#160;            retval = GetExceptionCode();</div>
<div class="line"><a name="l04422"></a><span class="lineno"> 4422</span>&#160;        }</div>
<div class="line"><a name="l04423"></a><span class="lineno"> 4423</span>&#160;    }</div>
<div class="line"><a name="l04424"></a><span class="lineno"> 4424</span>&#160; </div>
<div class="line"><a name="l04425"></a><span class="lineno"> 4425</span>&#160;    TRACE(<span class="stringliteral">&quot;NtUserEnumDisplaySettings&quot;</span>);</div>
<div class="line"><a name="l04426"></a><span class="lineno"> 4426</span>&#160; </div>
<div class="line"><a name="l04427"></a><span class="lineno"> 4427</span>&#160;    <a class="code" href="a00899.html#ac2181d07596893ed44d18aa267ce4d23">LeaveCrit</a>();</div>
<div class="line"><a name="l04428"></a><span class="lineno"> 4428</span>&#160; </div>
<div class="line"><a name="l04429"></a><span class="lineno"> 4429</span>&#160;    <span class="keywordflow">return</span> (retval);</div>
<div class="line"><a name="l04430"></a><span class="lineno"> 4430</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="aa00665_html_a762f2fbf9a0ad4d9a63f7c92adce1297"><div class="ttname"><a href="a00665.html#a762f2fbf9a0ad4d9a63f7c92adce1297">bMultipleDisplaySystem</a></div><div class="ttdeci">BOOL bMultipleDisplaySystem</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00046">drvsup.c:46</a></div></div>
<div class="ttc" id="aa00371_html_a01c4659626880ba56745765a3580a36b"><div class="ttname"><a href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a></div><div class="ttdeci">#define RIPMSG0(flags, szFmt)</div><div class="ttdef"><b>Definition:</b> <a href="a00371_source.html#l00131">winerrp.h:131</a></div></div>
<div class="ttc" id="aa02605_html_a0a83e72210bd4213414535c6d7351d6f"><div class="ttname"><a href="a02605.html#a0a83e72210bd4213414535c6d7351d6f">tagDISPLAYINFO::cBitsPixel</a></div><div class="ttdeci">UINT cBitsPixel</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01583">user.h:1583</a></div></div>
<div class="ttc" id="aa00719_html_a333336c1f5ede3d334818ee0b68bddca"><div class="ttname"><a href="a00719.html#a333336c1f5ede3d334818ee0b68bddca">xxxLW_DCInit</a></div><div class="ttdeci">VOID xxxLW_DCInit(VOID)</div><div class="ttdef"><b>Definition:</b> <a href="a00719_source.html#l00705">init.c:705</a></div></div>
<div class="ttc" id="aa02605_html_a7ae1e4da76ad52e90f87fe39f43b2c4f"><div class="ttname"><a href="a02605.html#a7ae1e4da76ad52e90f87fe39f43b2c4f">tagDISPLAYINFO::rcPrimaryScreen</a></div><div class="ttdeci">RECT rcPrimaryScreen</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01571">user.h:1571</a></div></div>
<div class="ttc" id="aa00665_html_a80592f8b0ad68fc0311741b0cbf6e01aa01ae391162e54069de625bdc7049e934"><div class="ttname"><a href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa01ae391162e54069de625bdc7049e934">DispDriverRegHardwareProfileCreate</a></div><div class="ttdeci">@ DispDriverRegHardwareProfileCreate</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00033">drvsup.c:33</a></div></div>
<div class="ttc" id="aa00821_html_af5e5b32f8171b8bb0dc4c27012b77918"><div class="ttname"><a href="a00821.html#af5e5b32f8171b8bb0dc4c27012b77918">FastGetProfileIntFromID</a></div><div class="ttdeci">int FastGetProfileIntFromID(UINT idSection, UINT idKey, int def)</div><div class="ttdef"><b>Definition:</b> <a href="a00821_source.html#l00631">profile.c:631</a></div></div>
<div class="ttc" id="aa00665_html_ae157271d2738ad5440f4428d44232e65"><div class="ttname"><a href="a00665.html#ae157271d2738ad5440f4428d44232e65">UserGetRegistryHandleFromDeviceMap</a></div><div class="ttdeci">HANDLE UserGetRegistryHandleFromDeviceMap(PUNICODE_STRING deviceName, DISP_DRIVER_REGISTRY_TYPE ParamType, BOOL bMatchBaseVideo, PNTSTATUS pStatus)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00249">drvsup.c:249</a></div></div>
<div class="ttc" id="aa00899_html_ae451a2dc8791c420d7c956a63adc33ba"><div class="ttname"><a href="a00899.html#ae451a2dc8791c420d7c956a63adc33ba">EnterCrit</a></div><div class="ttdeci">VOID EnterCrit(VOID)</div></div>
<div class="ttc" id="aa00665_html_a80592f8b0ad68fc0311741b0cbf6e01a"><div class="ttname"><a href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01a">_DISP_DRIVER_REGISTRY_TYPE</a></div><div class="ttdeci">_DISP_DRIVER_REGISTRY_TYPE</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00030">drvsup.c:30</a></div></div>
<div class="ttc" id="aa02801_html"><div class="ttname"><a href="a02801.html">tagDESKTOP</a></div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l01703">userk.h:1703</a></div></div>
<div class="ttc" id="aa02601_html"><div class="ttname"><a href="a02601.html">tagPHYSICAL_DEV_INFO</a></div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01543">user.h:1543</a></div></div>
<div class="ttc" id="aa00371_html_ad6b24a3d61abdc148c8751b5c5add686"><div class="ttname"><a href="a00371.html#ad6b24a3d61abdc148c8751b5c5add686">RIP_VERBOSE</a></div><div class="ttdeci">#define RIP_VERBOSE</div><div class="ttdef"><b>Definition:</b> <a href="a00371_source.html#l00030">winerrp.h:30</a></div></div>
<div class="ttc" id="aa00935_html_a479bbe69c871894f6ca23dfa237481ad"><div class="ttname"><a href="a00935.html#a479bbe69c871894f6ca23dfa237481ad">SetRect</a></div><div class="ttdeci">BOOL APIENTRY SetRect(LPRECT prc, int left, int top, int right, int bottom)</div><div class="ttdef"><b>Definition:</b> <a href="a00935_source.html#l00021">rect.c:21</a></div></div>
<div class="ttc" id="aa02605_html_af0da313e582dc95c2853349086631cd8"><div class="ttname"><a href="a02605.html#af0da313e582dc95c2853349086631cd8">tagDISPLAYINFO::hdcScreen</a></div><div class="ttdeci">HDC hdcScreen</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01566">user.h:1566</a></div></div>
<div class="ttc" id="aa03257_html_aea20d6528ad57e108c962a4fcb2e91d9"><div class="ttname"><a href="a03257.html#aea20d6528ad57e108c962a4fcb2e91d9">gphysDevInfo</a></div><div class="ttdeci">PHYSICAL_DEV_INFO gphysDevInfo[]</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00095">kernel/globals.c:95</a></div></div>
<div class="ttc" id="aa02601_html_ad199e09483960703c70d31130d1a6cf9"><div class="ttname"><a href="a02601.html#ad199e09483960703c70d31130d1a6cf9">tagPHYSICAL_DEV_INFO::pFileObject</a></div><div class="ttdeci">PVOID pFileObject</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01547">user.h:1547</a></div></div>
<div class="ttc" id="aa00665_html_a80592f8b0ad68fc0311741b0cbf6e01aa5ce32297dc3f6df4e82c6e0790d30063"><div class="ttname"><a href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa5ce32297dc3f6df4e82c6e0790d30063">DispDriverRegHardwareProfile</a></div><div class="ttdeci">@ DispDriverRegHardwareProfile</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00032">drvsup.c:32</a></div></div>
<div class="ttc" id="aa00665_html_ad1a9b877f3705368d000061536e1b1fb"><div class="ttname"><a href="a00665.html#ad1a9b877f3705368d000061536e1b1fb">ProbeAndCaptureDeviceName</a></div><div class="ttdeci">BOOL ProbeAndCaptureDeviceName(PUNICODE_STRING Destination, PUNICODE_STRING Source)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00073">drvsup.c:73</a></div></div>
<div class="ttc" id="aa00665_html_af58d084fab4188005b01c976f76bbefa"><div class="ttname"><a href="a00665.html#af58d084fab4188005b01c976f76bbefa">UserBuildDevmodeList</a></div><div class="ttdeci">VOID UserBuildDevmodeList(PPHYSICAL_DEV_INFO physinfo)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l01758">drvsup.c:1758</a></div></div>
<div class="ttc" id="aa00665_html_a4f95d12ae9db57753d1ce7447479f0ee"><div class="ttname"><a href="a00665.html#a4f95d12ae9db57753d1ce7447479f0ee">gbBaseVideo</a></div><div class="ttdeci">BOOL gbBaseVideo</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00045">drvsup.c:45</a></div></div>
<div class="ttc" id="aa00371_html_a162a73e20dfabca084a3ebb4581631a8"><div class="ttname"><a href="a00371.html#a162a73e20dfabca084a3ebb4581631a8">UserAssert</a></div><div class="ttdeci">#define UserAssert(exp)</div><div class="ttdef"><b>Definition:</b> <a href="a00950_source.html#l00117">usersrv.h:117</a></div></div>
<div class="ttc" id="aa00371_html_afa5f32de88404289ec03cd2c0e61e94f"><div class="ttname"><a href="a00371.html#afa5f32de88404289ec03cd2c0e61e94f">RIP_ERROR</a></div><div class="ttdeci">#define RIP_ERROR</div><div class="ttdef"><b>Definition:</b> <a href="a00371_source.html#l00028">winerrp.h:28</a></div></div>
<div class="ttc" id="aa00020_html_a263f5b35c44d9f9ae5c74acae8037644"><div class="ttname"><a href="a00020.html#a263f5b35c44d9f9ae5c74acae8037644">rcScreen</a></div><div class="ttdeci">RECT rcScreen</div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00059">clglobal.c:59</a></div></div>
<div class="ttc" id="aa03629_html"><div class="ttname"><a href="a03629.html">precomp.h</a></div></div>
<div class="ttc" id="aa03257_html_a5f96c779e6c723388217ee64122dbec5"><div class="ttname"><a href="a03257.html#a5f96c779e6c723388217ee64122dbec5">cphysDevInfo</a></div><div class="ttdeci">DWORD cphysDevInfo</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00105">kernel/globals.c:105</a></div></div>
<div class="ttc" id="aa00371_html_a31aafffb49dfe98bdc749c9b35c90162"><div class="ttname"><a href="a00371.html#a31aafffb49dfe98bdc749c9b35c90162">RIPMSG1</a></div><div class="ttdeci">#define RIPMSG1(flags, szFmt, p1)</div><div class="ttdef"><b>Definition:</b> <a href="a00371_source.html#l00132">winerrp.h:132</a></div></div>
<div class="ttc" id="aa02601_html_a2a9b923a44a5a1384ba6b845933e516c"><div class="ttname"><a href="a02601.html#a2a9b923a44a5a1384ba6b845933e516c">tagPHYSICAL_DEV_INFO::DevOwned</a></div><div class="ttdeci">UCHAR DevOwned</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01548">user.h:1548</a></div></div>
<div class="ttc" id="aa00257_html_a8315d2c807ba18ba9e528c40614b6173"><div class="ttname"><a href="a00257.html#a8315d2c807ba18ba9e528c40614b6173">PtiCurrent</a></div><div class="ttdeci">PTHREADINFO PtiCurrent(VOID)</div><div class="ttdef"><b>Definition:</b> <a href="a00263_source.html#l00526">winmgrc.c:526</a></div></div>
<div class="ttc" id="aa00665_html_ad7c3f68db698140187a708775e0e3c0e"><div class="ttname"><a href="a00665.html#ad7c3f68db698140187a708775e0e3c0e">UserCreateExclusiveDC</a></div><div class="ttdeci">HDC UserCreateExclusiveDC(PUNICODE_STRING pstrDeviceName, PDEVMODEW pDevmode, PVOID *ppDevice)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l02654">drvsup.c:2654</a></div></div>
<div class="ttc" id="aa00665_html_a7c930cc47b4f158c545b3f7dbcdb75c5"><div class="ttname"><a href="a00665.html#a7c930cc47b4f158c545b3f7dbcdb75c5">InitLoadDriver</a></div><div class="ttdeci">NTSTATUS InitLoadDriver(VOID)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l02945">drvsup.c:2945</a></div></div>
<div class="ttc" id="aa00665_html_aa8b64103d379d1cc9e91a96db783aa63"><div class="ttname"><a href="a00665.html#aa8b64103d379d1cc9e91a96db783aa63">UserLogDisplayDriverEvent</a></div><div class="ttdeci">VOID UserLogDisplayDriverEvent(DISP_DRIVER_LOG MsgType)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00643">drvsup.c:643</a></div></div>
<div class="ttc" id="aa00665_html_a01e58bda8aaf9059fe3ffa0ddd55567b"><div class="ttname"><a href="a00665.html#a01e58bda8aaf9059fe3ffa0ddd55567b">DISP_DRIVER_REGISTRY_TYPE</a></div><div class="ttdeci">enum _DISP_DRIVER_REGISTRY_TYPE DISP_DRIVER_REGISTRY_TYPE</div></div>
<div class="ttc" id="aa00665_html_ad5ab78c8fa70d3c1a63e786bc439ee73"><div class="ttname"><a href="a00665.html#ad5ab78c8fa70d3c1a63e786bc439ee73">InitUserScreen</a></div><div class="ttdeci">VOID InitUserScreen(VOID)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l02855">drvsup.c:2855</a></div></div>
<div class="ttc" id="aa02605_html_a76af5d5bf5f5037a7ddcd8bb543fd388"><div class="ttname"><a href="a02605.html#a76af5d5bf5f5037a7ddcd8bb543fd388">tagDISPLAYINFO::pDevInfo</a></div><div class="ttdeci">PPHYSICAL_DEV_INFO pDevInfo</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01578">user.h:1578</a></div></div>
<div class="ttc" id="aa00665_html_a2d00e6c7566edba4539f45a026c4d150"><div class="ttname"><a href="a00665.html#a2d00e6c7566edba4539f45a026c4d150">UserDeleteExclusiveDC</a></div><div class="ttdeci">VOID UserDeleteExclusiveDC(HDC hdc, PVOID pDevice)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l02832">drvsup.c:2832</a></div></div>
<div class="ttc" id="aa02601_html_a65e861fd574d4b5dd70d500641b395e8"><div class="ttname"><a href="a02601.html#a65e861fd574d4b5dd70d500641b395e8">tagPHYSICAL_DEV_INFO::stateFlags</a></div><div class="ttdeci">DWORD stateFlags</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01550">user.h:1550</a></div></div>
<div class="ttc" id="aa00665_html_a5de8fc19f0066ed30a41b9c0ef4d4deb"><div class="ttname"><a href="a00665.html#a5de8fc19f0066ed30a41b9c0ef4d4deb">SoftwareSettings</a></div><div class="ttdeci">static LPWSTR SoftwareSettings[]</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00750">drvsup.c:750</a></div></div>
<div class="ttc" id="aa00665_html_a7f72492be72deb72088a46321f3703e9"><div class="ttname"><a href="a00665.html#a7f72492be72deb72088a46321f3703e9">ProbeAndCaptureDevmode</a></div><div class="ttdeci">NTSTATUS ProbeAndCaptureDevmode(PUNICODE_STRING pstrDeviceName, PDEVMODEW *DestinationDevmode, PDEVMODEW SourceDevmode, BOOL bKernelMode)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l01977">drvsup.c:1977</a></div></div>
<div class="ttc" id="aa00899_html_afc13cb8b9a1ddb236b66ee390aa8efddaff58d8407e3f19ebdcedc76990bfb988"><div class="ttname"><a href="a00899.html#afc13cb8b9a1ddb236b66ee390aa8efddaff58d8407e3f19ebdcedc76990bfb988">DispDriverParamUser</a></div><div class="ttdeci">@ DispDriverParamUser</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l03346">userk.h:3346</a></div></div>
<div class="ttc" id="aa00371_html_ae61d954062a9ece52e350e54cad9a23d"><div class="ttname"><a href="a00371.html#ae61d954062a9ece52e350e54cad9a23d">RIPERR0</a></div><div class="ttdeci">#define RIPERR0(idErr, flags, szFmt)</div><div class="ttdef"><b>Definition:</b> <a href="a00371_source.html#l00119">winerrp.h:119</a></div></div>
<div class="ttc" id="aa00665_html_a74dce85d73485fdf46d61ce465e18061"><div class="ttname"><a href="a00665.html#a74dce85d73485fdf46d61ce465e18061">UserSetDisplayDriverParameters</a></div><div class="ttdeci">NTSTATUS UserSetDisplayDriverParameters(PUNICODE_STRING deviceName, DISP_DRIVER_PARAM_TYPE ParamType, PDEVMODEW pdevmode, PRECT pRect)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l01239">drvsup.c:1239</a></div></div>
<div class="ttc" id="aa00665_html_a99ff717624d5af5628c02ebf95a506ce"><div class="ttname"><a href="a00665.html#a99ff717624d5af5628c02ebf95a506ce">UserWriteDisplayDriverParameters</a></div><div class="ttdeci">NTSTATUS UserWriteDisplayDriverParameters(ULONG RelativeTo, PWSTR Path, PDEVMODEW pdevmode, PRECT pRect)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l01146">drvsup.c:1146</a></div></div>
<div class="ttc" id="aa00665_html_a1178983eb56b481bd0bcb216f7d144cf"><div class="ttname"><a href="a00665.html#a1178983eb56b481bd0bcb216f7d144cf">UserGetDisplayDriverNames</a></div><div class="ttdeci">LPWSTR UserGetDisplayDriverNames(PUNICODE_STRING deviceName)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00554">drvsup.c:554</a></div></div>
<div class="ttc" id="aa03257_html_a1a36496b13c02b06ee64e9c01c029477"><div class="ttname"><a href="a03257.html#a1a36496b13c02b06ee64e9c01c029477">ghdcMem</a></div><div class="ttdeci">HDC ghdcMem</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00399">kernel/globals.c:399</a></div></div>
<div class="ttc" id="aa00665_html_a2ccdbdde9498b06c48c5eca065b9a1fd"><div class="ttname"><a href="a00665.html#a2ccdbdde9498b06c48c5eca065b9a1fd">DISPLAY_DEVICE_VGA_COMPATIBLE</a></div><div class="ttdeci">#define DISPLAY_DEVICE_VGA_COMPATIBLE</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00059">drvsup.c:59</a></div></div>
<div class="ttc" id="aa02609_html"><div class="ttname"><a href="a02609.html">tagDESKTOPINFO</a></div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01599">user.h:1599</a></div></div>
<div class="ttc" id="aa00665_html_a291aca25f546e197608f39e4887001a9"><div class="ttname"><a href="a00665.html#a291aca25f546e197608f39e4887001a9">UserGetDeviceFromName</a></div><div class="ttdeci">PPHYSICAL_DEV_INFO UserGetDeviceFromName(PUNICODE_STRING pstrDeviceName, ULONG bShareState)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l01451">drvsup.c:1451</a></div></div>
<div class="ttc" id="aa03257_html_ab597263bdbb3441715804712fcf29e6d"><div class="ttname"><a href="a03257.html#ab597263bdbb3441715804712fcf29e6d">gpDispInfo</a></div><div class="ttdeci">PDISPLAYINFO gpDispInfo</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00125">kernel/globals.c:125</a></div></div>
<div class="ttc" id="aa00821_html_a71ab7da1e1b58e117d8fe2bcca8fcdb0"><div class="ttname"><a href="a00821.html#a71ab7da1e1b58e117d8fe2bcca8fcdb0">FastOpenProfileUserMapping</a></div><div class="ttdeci">BOOL FastOpenProfileUserMapping(VOID)</div><div class="ttdef"><b>Definition:</b> <a href="a00821_source.html#l00160">profile.c:160</a></div></div>
<div class="ttc" id="aa02605_html_a81f6c7e5df9c00e3f33e6e1a94ac75fc"><div class="ttname"><a href="a02605.html#a81f6c7e5df9c00e3f33e6e1a94ac75fc">tagDISPLAYINFO::hDev</a></div><div class="ttdeci">HANDLE hDev</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01576">user.h:1576</a></div></div>
<div class="ttc" id="aa00821_html_aa99363e718e5d1c8d2d5232e51fe2716"><div class="ttname"><a href="a00821.html#aa99363e718e5d1c8d2d5232e51fe2716">FastCloseProfileUserMapping</a></div><div class="ttdeci">BOOL FastCloseProfileUserMapping(VOID)</div><div class="ttdef"><b>Definition:</b> <a href="a00821_source.html#l00224">profile.c:224</a></div></div>
<div class="ttc" id="aa00680_html_a3d55823092d5efdce994868cd5efa7d8"><div class="ttname"><a href="a00680.html#a3d55823092d5efdce994868cd5efa7d8">SharedAlloc</a></div><div class="ttdeci">PVOID SharedAlloc(UINT cbAlloc)</div><div class="ttdef"><b>Definition:</b> <a href="a00680_source.html#l00305">ex.c:305</a></div></div>
<div class="ttc" id="aa02605_html_a3b0790cb5dc5ebed344f79adcd7d8fa0"><div class="ttname"><a href="a02605.html#a3b0790cb5dc5ebed344f79adcd7d8fa0">tagDISPLAYINFO::cPlanes</a></div><div class="ttdeci">UINT cPlanes</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01582">user.h:1582</a></div></div>
<div class="ttc" id="aa02513_html_ad47c3c3836f1cb6cfb9ee4dd5d344496"><div class="ttname"><a href="a02513.html#ad47c3c3836f1cb6cfb9ee4dd5d344496">tagSERVERINFO::rcWork</a></div><div class="ttdeci">RECT rcWork</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01007">user.h:1007</a></div></div>
<div class="ttc" id="aa00665_html_a659e9e6483dce7cb60583d9b35f14de4"><div class="ttname"><a href="a00665.html#a659e9e6483dce7cb60583d9b35f14de4">DM_INTERNAL_VALID_FLAGS</a></div><div class="ttdeci">#define DM_INTERNAL_VALID_FLAGS</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00050">drvsup.c:50</a></div></div>
<div class="ttc" id="aa00665_html_a998b6ce5633527f762d09b0f887e633f"><div class="ttname"><a href="a00665.html#a998b6ce5633527f762d09b0f887e633f">AttachedSettings</a></div><div class="ttdeci">static LPWSTR AttachedSettings[]</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00742">drvsup.c:742</a></div></div>
<div class="ttc" id="aa00563_html_a074685e97e89d6aa2accdfcb82328699"><div class="ttname"><a href="a00563.html#a074685e97e89d6aa2accdfcb82328699">DWORD</a></div><div class="ttdeci">ddeml v[i&lt; inst &gt;][t&lt; type &gt;][hObj|pObj] Dump DDEML state information ddeml lists all ddeml instances for this process n ddeml t&lt; type &gt; lists all ddeml objects of the given type n n assumes link is first DWORD</div><div class="ttdef"><b>Definition:</b> <a href="a00563_source.html#l00175">exts.h:175</a></div></div>
<div class="ttc" id="aa00665_html_a744babe1f701ee80c5d81250e69c4db5"><div class="ttname"><a href="a00665.html#a744babe1f701ee80c5d81250e69c4db5">UserSaveCurrentMode</a></div><div class="ttdeci">VOID UserSaveCurrentMode(PDESKTOP pDesktop, PPHYSICAL_DEV_INFO physinfo, LPDEVMODEW lpdevmodeInformation)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00173">drvsup.c:173</a></div></div>
<div class="ttc" id="aa03212_html_a49402fd1bea89e835e5bc8bc96de744f"><div class="ttname"><a href="a03212.html#a49402fd1bea89e835e5bc8bc96de744f">FillRect</a></div><div class="ttdeci">int APIENTRY FillRect(HDC hdc, LPCRECT prc, HBRUSH hBrush)</div><div class="ttdef"><b>Definition:</b> <a href="a03212_source.html#l00029">rtl/draw.c:29</a></div></div>
<div class="ttc" id="aa00665_html_a64f37a06db6b3bcaf0b9bb15887675e6"><div class="ttname"><a href="a00665.html#a64f37a06db6b3bcaf0b9bb15887675e6">UserLoadDisplayDriver</a></div><div class="ttdeci">HDEV UserLoadDisplayDriver(PPHYSICAL_DEV_INFO physinfo, PUNICODE_STRING deviceName, PUNICODE_STRING pstrDisplayDriver, LPDEVMODEW lpdevmodeInformation, BOOL bDefaultDisplay, BOOL bMulti, PDEVICE_LOCK *pDevLock)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l01326">drvsup.c:1326</a></div></div>
<div class="ttc" id="aa00665_html_a2422a3691562e077c000f1f99148dba8"><div class="ttname"><a href="a00665.html#a2422a3691562e077c000f1f99148dba8">UserCreateHDEV</a></div><div class="ttdeci">HDEV UserCreateHDEV(PUNICODE_STRING pstrDevice, LPDEVMODEW lpdevmodeInformation, PPHYSICAL_DEV_INFO *physdevinfo, PDEVICE_LOCK *pDevLock)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l02579">drvsup.c:2579</a></div></div>
<div class="ttc" id="aa02605_html"><div class="ttname"><a href="a02605.html">tagDISPLAYINFO</a></div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01564">user.h:1564</a></div></div>
<div class="ttc" id="aa00371_html_a41f433389f20db57f042022a662e96de"><div class="ttname"><a href="a00371.html#a41f433389f20db57f042022a662e96de">RIP_WARNING</a></div><div class="ttdeci">#define RIP_WARNING</div><div class="ttdef"><b>Definition:</b> <a href="a00371_source.html#l00029">winerrp.h:29</a></div></div>
<div class="ttc" id="aa00665_html_a9060b90d884ff96a08e71aec773de234"><div class="ttname"><a href="a00665.html#a9060b90d884ff96a08e71aec773de234">UserDriverExtraCallback</a></div><div class="ttdeci">NTSTATUS UserDriverExtraCallback(PWSTR ValueName, ULONG ValueType, PVOID ValueData, ULONG ValueLength, PVOID Context, PVOID EntryContext)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00757">drvsup.c:757</a></div></div>
<div class="ttc" id="aa02601_html_a19e507bdf81c67304d8ba81c600ac0eb"><div class="ttname"><a href="a02601.html#a19e507bdf81c67304d8ba81c600ac0eb">tagPHYSICAL_DEV_INFO::szNtDeviceName</a></div><div class="ttdeci">WCHAR szNtDeviceName[16]</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01545">user.h:1545</a></div></div>
<div class="ttc" id="aa03257_html_a49d76150714c65558a2481eef6093659"><div class="ttname"><a href="a03257.html#a49d76150714c65558a2481eef6093659">gpdiStatic</a></div><div class="ttdeci">PDESKTOPINFO gpdiStatic</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00089">kernel/globals.c:89</a></div></div>
<div class="ttc" id="aa00899_html_a66d45395271597521ff27e0a72253d9f"><div class="ttname"><a href="a00899.html#a66d45395271597521ff27e0a72253d9f">DISP_DRIVER_PARAM_TYPE</a></div><div class="ttdeci">enum _DISP_DRIVER_PARAM_TYPE DISP_DRIVER_PARAM_TYPE</div></div>
<div class="ttc" id="aa02605_html_a263f5b35c44d9f9ae5c74acae8037644"><div class="ttname"><a href="a02605.html#a263f5b35c44d9f9ae5c74acae8037644">tagDISPLAYINFO::rcScreen</a></div><div class="ttdeci">RECT rcScreen</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01570">user.h:1570</a></div></div>
<div class="ttc" id="aa02801_html_a7865078d53afb2719414b44d87f75c5d"><div class="ttname"><a href="a02801.html#a7865078d53afb2719414b44d87f75c5d">tagDESKTOP::pDispInfo</a></div><div class="ttdeci">PDISPLAYINFO pDispInfo</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l01707">userk.h:1707</a></div></div>
<div class="ttc" id="aa00665_html_a5f0c711ec59537d55a52988377290e3c"><div class="ttname"><a href="a00665.html#a5f0c711ec59537d55a52988377290e3c">UserDestroyHDEV</a></div><div class="ttdeci">VOID UserDestroyHDEV(HDEV hdev)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l02566">drvsup.c:2566</a></div></div>
<div class="ttc" id="aa02605_html_a5e0929a8ef013061be966961b2eddbff"><div class="ttname"><a href="a02605.html#a5e0929a8ef013061be966961b2eddbff">tagDISPLAYINFO::pDevLock</a></div><div class="ttdeci">LPVOID pDevLock</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01577">user.h:1577</a></div></div>
<div class="ttc" id="aa00665_html_a368e1b12420426ae8aaea867a5a40c98"><div class="ttname"><a href="a00665.html#a368e1b12420426ae8aaea867a5a40c98">__EnumDisplayQueryRoutine</a></div><div class="ttdeci">NTSTATUS __EnumDisplayQueryRoutine(IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00515">drvsup.c:515</a></div></div>
<div class="ttc" id="aa00665_html_a1496fe4e3afa850f6bd625b0c3542b78"><div class="ttname"><a href="a00665.html#a1496fe4e3afa850f6bd625b0c3542b78">UserGetDisplayDriverParameters</a></div><div class="ttdeci">NTSTATUS UserGetDisplayDriverParameters(PUNICODE_STRING deviceName, PDEVMODEW pdevmode, BOOL bEmptyDevmode)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00799">drvsup.c:799</a></div></div>
<div class="ttc" id="aa02889_html_abb1184e0c5805b5ad89b79dcc2bd17c8"><div class="ttname"><a href="a02889.html#abb1184e0c5805b5ad89b79dcc2bd17c8">tagTHREADINFO::rpdesk</a></div><div class="ttdeci">PDESKTOP rpdesk</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l02288">userk.h:2288</a></div></div>
<div class="ttc" id="aa02605_html_a2458aa3b22e3415ba05fc9fba634628d"><div class="ttname"><a href="a02605.html#a2458aa3b22e3415ba05fc9fba634628d">tagDISPLAYINFO::cyPixelsPerInch</a></div><div class="ttdeci">UINT cyPixelsPerInch</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01581">user.h:1581</a></div></div>
<div class="ttc" id="aa02601_html_a11272e040ff3989da159f50e88b7b8c6"><div class="ttname"><a href="a02601.html#a11272e040ff3989da159f50e88b7b8c6">tagPHYSICAL_DEV_INFO::cbdevmodeInfo</a></div><div class="ttdeci">ULONG cbdevmodeInfo</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01552">user.h:1552</a></div></div>
<div class="ttc" id="aa00899_html_ac2181d07596893ed44d18aa267ce4d23"><div class="ttname"><a href="a00899.html#ac2181d07596893ed44d18aa267ce4d23">LeaveCrit</a></div><div class="ttdeci">VOID LeaveCrit(VOID)</div></div>
<div class="ttc" id="aa00899_html_afc13cb8b9a1ddb236b66ee390aa8efdda6760d6d8884c7ede93accae00a0e84b1"><div class="ttname"><a href="a00899.html#afc13cb8b9a1ddb236b66ee390aa8efdda6760d6d8884c7ede93accae00a0e84b1">DispDriverParamDefault</a></div><div class="ttdeci">@ DispDriverParamDefault</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l03345">userk.h:3345</a></div></div>
<div class="ttc" id="aa00665_html_accf086041259110de4bd6aac57f64279"><div class="ttname"><a href="a00665.html#accf086041259110de4bd6aac57f64279">DEFAULT_POS_VALUE</a></div><div class="ttdeci">#define DEFAULT_POS_VALUE</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00048">drvsup.c:48</a></div></div>
<div class="ttc" id="aa02601_html_a671c14f1e07dff0246711968044db9c4"><div class="ttname"><a href="a02601.html#a671c14f1e07dff0246711968044db9c4">tagPHYSICAL_DEV_INFO::pDeviceHandle</a></div><div class="ttdeci">PVOID pDeviceHandle</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01546">user.h:1546</a></div></div>
<div class="ttc" id="aa02605_html_a81fb25d8b2c4e7012c2225397f6fe699"><div class="ttname"><a href="a02605.html#a81fb25d8b2c4e7012c2225397f6fe699">tagDISPLAYINFO::hdcBits</a></div><div class="ttdeci">HDC hdcBits</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01568">user.h:1568</a></div></div>
<div class="ttc" id="aa00656_html_a90ee9bcff7d18cc35574aa5a0b21d376"><div class="ttname"><a href="a00656.html#a90ee9bcff7d18cc35574aa5a0b21d376">UserResetDisplayDevice</a></div><div class="ttdeci">VOID UserResetDisplayDevice(HDEV hdev)</div><div class="ttdef"><b>Definition:</b> <a href="a00656_source.html#l02159">desktop.c:2159</a></div></div>
<div class="ttc" id="aa00665_html_a8c6e355920ecb443e8d0f47bfbfff26d"><div class="ttname"><a href="a00665.html#a8c6e355920ecb443e8d0f47bfbfff26d">UserReleaseDevmodeList</a></div><div class="ttdeci">VOID UserReleaseDevmodeList(PPHYSICAL_DEV_INFO physinfo)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l01942">drvsup.c:1942</a></div></div>
<div class="ttc" id="aa00935_html_a31ccccdb469eefbb55d18b71a26af0da"><div class="ttname"><a href="a00935.html#a31ccccdb469eefbb55d18b71a26af0da">CopyRect</a></div><div class="ttdeci">BOOL APIENTRY CopyRect(LPRECT prcDst, CONST RECT *prcSrc)</div><div class="ttdef"><b>Definition:</b> <a href="a00935_source.html#l00391">rect.c:391</a></div></div>
<div class="ttc" id="aa02605_html_ad3e0b5376b5114f4269df20805a3a85e"><div class="ttname"><a href="a02605.html#ad3e0b5376b5114f4269df20805a3a85e">tagDISPLAYINFO::cxPixelsPerInch</a></div><div class="ttdeci">UINT cxPixelsPerInch</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01580">user.h:1580</a></div></div>
<div class="ttc" id="aa03257_html_aa88de52d1162c4701fb38718c5b75b24"><div class="ttname"><a href="a03257.html#aa88de52d1162c4701fb38718c5b75b24">ghdcMem2</a></div><div class="ttdeci">HDC ghdcMem2</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00400">kernel/globals.c:400</a></div></div>
<div class="ttc" id="aa00020_html_ad760da1dd81d9e84dee607d18edfde39"><div class="ttname"><a href="a00020.html#ad760da1dd81d9e84dee607d18edfde39">gpsi</a></div><div class="ttdeci">PSERVERINFO gpsi</div><div class="ttdef"><b>Definition:</b> <a href="a00020_source.html#l00039">clglobal.c:39</a></div></div>
<div class="ttc" id="aa03257_html_a9744bfca19a1b2f747cb8816a7685cd8"><div class="ttname"><a href="a03257.html#a9744bfca19a1b2f747cb8816a7685cd8">strDisplayDriver</a></div><div class="ttdeci">UNICODE_STRING strDisplayDriver</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00322">kernel/globals.c:322</a></div></div>
<div class="ttc" id="aa02601_html_a8ce83830b42b65fa6b57fbf904555e08"><div class="ttname"><a href="a02601.html#a8ce83830b42b65fa6b57fbf904555e08">tagPHYSICAL_DEV_INFO::cOwnCount</a></div><div class="ttdeci">ULONG cOwnCount</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01549">user.h:1549</a></div></div>
<div class="ttc" id="aa00665_html_a3affe9dfb55da29e7cb9e961db8d3f9a"><div class="ttname"><a href="a00665.html#a3affe9dfb55da29e7cb9e961db8d3f9a">NtUserEnumDisplaySettings</a></div><div class="ttdeci">NTSTATUS NtUserEnumDisplaySettings(IN PUNICODE_STRING pstrDeviceName, IN DWORD iModeNum, OUT LPDEVMODEW lpDevMode, DWORD dwFalgs)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l04187">drvsup.c:4187</a></div></div>
<div class="ttc" id="aa02601_html_a1fe37d9234f46b11eab06dbfbafab7e9"><div class="ttname"><a href="a02601.html#a1fe37d9234f46b11eab06dbfbafab7e9">tagPHYSICAL_DEV_INFO::devmodeInfo</a></div><div class="ttdeci">PDEVMODEW devmodeInfo</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01553">user.h:1553</a></div></div>
<div class="ttc" id="aa00665_html_a80592f8b0ad68fc0311741b0cbf6e01aa58218890fafaa0643a59e9294a9843d0"><div class="ttname"><a href="a00665.html#a80592f8b0ad68fc0311741b0cbf6e01aa58218890fafaa0643a59e9294a9843d0">DispDriverRegGlobal</a></div><div class="ttdeci">@ DispDriverRegGlobal</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00031">drvsup.c:31</a></div></div>
<div class="ttc" id="aa00371_html_a002956db9fb529e159fb441f09f39b42"><div class="ttname"><a href="a00371.html#a002956db9fb529e159fb441f09f39b42">RIPNTERR0</a></div><div class="ttdeci">#define RIPNTERR0(idErr, flags, szFmt)</div><div class="ttdef"><b>Definition:</b> <a href="a00371_source.html#l00125">winerrp.h:125</a></div></div>
<div class="ttc" id="aa02513_html_ab4a2b5b4deef4d2014cbe6c3bb434b41"><div class="ttname"><a href="a02513.html#ab4a2b5b4deef4d2014cbe6c3bb434b41">tagSERVERINFO::gclBorder</a></div><div class="ttdeci">int gclBorder</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l00982">user.h:982</a></div></div>
<div class="ttc" id="aa00665_html_a2629889fd8bf33088b544b6c3128707a"><div class="ttname"><a href="a00665.html#a2629889fd8bf33088b544b6c3128707a">DefaultSettings</a></div><div class="ttdeci">static LPWSTR DefaultSettings[8]</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l00730">drvsup.c:730</a></div></div>
<div class="ttc" id="aa02601_html_a19bee6963f84c40169f417b39bc46059"><div class="ttname"><a href="a02601.html#a19bee6963f84c40169f417b39bc46059">tagPHYSICAL_DEV_INFO::pCurrentDevmode</a></div><div class="ttdeci">PDEVMODEW pCurrentDevmode</div><div class="ttdef"><b>Definition:</b> <a href="a00365_source.html#l01551">user.h:1551</a></div></div>
<div class="ttc" id="aa00665_html_ae1691bdb53d715053026f55f68e5d3f4"><div class="ttname"><a href="a00665.html#ae1691bdb53d715053026f55f68e5d3f4">UserFreeDevice</a></div><div class="ttdeci">VOID UserFreeDevice(PPHYSICAL_DEV_INFO physInfo)</div><div class="ttdef"><b>Definition:</b> <a href="a00665_source.html#l01721">drvsup.c:1721</a></div></div>
<div class="ttc" id="aa02801_html_a7670d05ec8727e45af6446b08a8e078c"><div class="ttname"><a href="a02801.html#a7670d05ec8727e45af6446b08a8e078c">tagDESKTOP::pDesktopDevmode</a></div><div class="ttdeci">PDEVMODE pDesktopDevmode</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l01705">userk.h:1705</a></div></div>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_885cc87fac2d91e269af0a5a959fa5f6.html">E:</a></li><li class="navelem"><a class="el" href="dir_4e091ed8704426a7a4980368ba259fde.html">git</a></li><li class="navelem"><a class="el" href="dir_cd70cb5eb491250157f2d55d3ff4b13e.html">backup</a></li><li class="navelem"><a class="el" href="dir_ba2b673b566ba104b956abdc6dec0552.html">org</a></li><li class="navelem"><a class="el" href="dir_5bb0003d7907b45051943541418399f5.html">ntuser</a></li><li class="navelem"><a class="el" href="dir_2a0a56546b70a0973705719e6a88eab3.html">kernel</a></li><li class="navelem"><a class="el" href="a00665.html">drvsup.c</a></li>
    <li class="footer">制作者
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
  </ul>
</div>
</body>
</html>
